计算机系统基本概念

2020-09-05  本文已影响0人  JeremyYv

系统软件

用于管理计算机本身的软件称为系统软件,可以分成两块:

一块是平台性的,如操作系统内核、驱动、运行库;

另外一块是用于程序开发的,如编译器、汇编器、链接器。


软件体系架构

软件体系架构

计算机中的主要资源

CPU

不要让CPU空闲

多道程序:通过监控程序使CPU不空闲,一空闲,就把等待着的程序启动(策略粗糙,不分轻重)。

分时系统:部分系统调用时,OS判断是否有其他程序在等待,有就让出CPU。(问题:如果有1个程序进行耗时运算或陷入无限循环,不进行系统调用,OS就好像死机了一样。

多任务系统:通过抢占式分配CPU。所有应用程序以进程的方式,运行在比OS权限低的级别。CPU由OS进行分配,每个进程有优先级。OS将CPU执行的进程快速切换,造成了很多进程同时运行的假象。

存储(磁盘+内存)

磁盘

物理磁盘分为多个盘片,每个盘片2个盘面,每面按同心圆分为若干磁道,每个磁道分为若干扇区,每个扇区一般存储512字节数据。

硬盘g

现代磁盘已经演进为 => 屏蔽了复杂的硬件细节,通过LBA(Logical Block Address),对整个磁盘的扇区从001进行编号

内存

早期,各程序是直接运行在物理内存上的,

因此带来了3个问题:

  1. 进程间地址空间不隔离,程序间可以相互改写数据

  2. 内存使用效率低,进程需要连续大小的内存,导致内存碎片

  3. 程序运行地址不确定,导致函数重定位困难

为此提出过2个解决方案:

  1. 分段:提出了每个进程独自的虚拟地址,通过页表与物理地址间进行映射
分段映射

这个方案解决了问题1、3,但是没有解决连续内存的问题,于是提出了方案2。

  1. 分页:在方案1的基础上,将虚拟内存分页(每页4kb)、物理内存分帧(每帧也是4kb),然后将页帧间进行映射

    分页映射

    ps.内存中每个地址可容纳1个byte的数据

    分页之后其他问题:单进程的最大虚拟地址4GB(32位OS),物理内存最大4GB,会导致多进程运行时,物理内存可能会不够用。

    解决方法:将进程中使用次数少的数据映射到磁盘

  2. 虚拟内存分段:在进程的虚拟内存中,会根据数据类型进行分段管理。

虚拟内存地址分配

IO设备


线程

因多核CPU的发展而诞生

轻量级进程,程序执行流的最小单元

每个进程由1~3个线程组成,会共享进程的text、data、heap段中的数据,寄存器和栈中的数据不共享

线程有三种状态:

每个线程拥有一段可执行的时间,称为时间片

线程状态切换

调度

优先级调度 + 轮转法

每个线程有优先级,高优先级的线程更早被分配时间片。

线程可分为IO密集型线程(经常IO主动放弃时间片)和CPU密集型线程(很少等待IO,一直在进行运算),

其中IO密集型线程更容易获得优先级的提升。

导致的问题:进程饿死,优先级过低的线程,始终分配不到时间片,无法执行。

解决:等待过久的线程将获得优先级提升。

备注

Linux下不存在真正意义上的线程概念,都称为任务(task)。但是不同的任务间可以共享内存空间,构成同一个进程,这些任务也就成了这个进程里的线程。

上一篇下一篇

猜你喜欢

热点阅读