美文网首页
计算机系统基本概念

计算机系统基本概念

作者: JeremyYv | 来源:发表于2020-09-05 19:53 被阅读0次

    系统软件

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

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

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


    软件体系架构

    软件体系架构

    计算机中的主要资源

    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段中的数据,寄存器和栈中的数据不共享

    线程有三种状态:

    • 运行

    • 就绪:可以立即运行,但是当前无空闲CPU

    • 等待:等待IO,无法执行

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

    线程状态切换

    调度

    优先级调度 + 轮转法

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

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

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

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

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

    备注

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

    相关文章

      网友评论

          本文标题:计算机系统基本概念

          本文链接:https://www.haomeiwen.com/subject/sgbfektx.html