计算机软件系统基本概念,计算机系统基本概念

系统软件

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

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

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

软件体系架构

32640d9b99cf

软件体系架构

计算机中的主要资源

CPU

不要让CPU空闲

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

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

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

存储(磁盘+内存)

磁盘

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

32640d9b99cf

硬盘g

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

内存

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

因此带来了3个问题:

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

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

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

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

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

32640d9b99cf

分段映射

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

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

32640d9b99cf

分页映射

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

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

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

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

32640d9b99cf

虚拟内存地址分配

IO设备

线程

因多核CPU的发展而诞生

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

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

线程有三种状态:

运行

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

等待:等待IO,无法执行

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

32640d9b99cf

线程状态切换

调度

优先级调度 + 轮转法:

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

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

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

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

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

备注

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值