《现代操作系统》知识点整理

                                           第一章 操作系统概述

什么是操作系统?

  1. 软件中最基础的部分是操作系统,它运行在内核态(也称为管态、核心态)。在这个模式中,操作系统具有对所有硬件的完全访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在用户态下。在用户态下,只使用了机器指令中的一个子集。特别是那些会影响机器的控制或可进行I/O的操作指令,在用户态中的程序是禁止的。
  2. 作为资源管理者的操作系统:负责对系统的硬软件资源实施有效的控制和管理,提高系统资源的利用率。

     资源管理包括用一下两种不同方式实现多路复用(共享)资源

在时间上复用:当一种资源在时间上复用时,不同的程序或用户轮流使用它。

在空间上复用:每个客户都得到资源的一部分,从而取代了客户排队。

      3. 作为扩展机器的操作系统:是计算机硬件的首次扩充,掩盖了硬件操作的细节,使用户或程序员与硬件细节隔离,从而方便了用户的使用。

操作系统的作用

  1. 从一般用户的观点来看,操作系统是用户与计算机硬件系统之间的接口。用户并不直接与计算机硬件打交道,而是通过操作系统提供的命令,系统功能调用以及图形化接口来使用计算机。
  2. 从资源管理的观点来看,操作系统使计算机资源的管理者。处理机的分配和控制,内存的分配和回收,I/O设备的分配和处理,文件的存取,共享和保护工作都是由操作系统完成的。
  3. 从虚拟机的观点来看,操作系统是扩充裸机(没有配置软件的计算机)功能的软件。在裸机上覆盖操作系统后,裸机将变成一台功能更强大使用更方便的虚拟机。
  4. 从任务组织的观点来看,操作系统是计算机工作流程的组织者。它负责在众多作业间切换处理机,并协调它们的推进速度,从而进一步提高系统的性能。

操作系统的设计目标

  1. 方便性:操作系统使计算机系统更易于使用
  2. 有效性:操作系统使计算机资源的使用更有效,即使资源的利用率更高
  3. 可扩充性:操作系统必须能方便地开发,测试和引进新的系统功能,以适应计算机硬件和体系结构的迅速发展以及应用不断扩大的要求
  4. 开放性:操作系统必须能提供统一开放的环境,以使其应用在不同的系统中具有可移植性,并使不同的系统能够通过网络进行集成,从而能正确,有效地协同工作

操作系统的5大功能

  1. 进程管理功能
  2. 存储管理功能
  3. 设备管理功能
  4. 文件管理功能
  5. 作业管理功能

计算机硬件介绍

1. 处理器CPU

计算机的大脑是CPU,它从内存中取出指令并执行。在每个CPU基本周期中,首先从内存中取出指令,解码以确定其类型和操作熟,接着执行之,然后取指、解码并执行下一条指令。

寄存器:在CPU内部用来保存关键变量和临时数据。种类:程序计数器、堆栈指针、程序状态字

2. 存储器

寄存器:它们用与CPU相同的材料制成,所以和CPU一样快,访问没有延时

高速缓存:其作用是为了更好的利用局部性原理,减少CPU访问主存的次数。简单地说,CPU正在访问的指令和数据,其可能会被以后多次访问到,或者是该指令和数据附近的内存区域,也可能会被多次访问。因此,第一次访问这一块区域时,将其复制到cache中,以后访问该区域的指令或者数据时,就不用再从主存中取出。现代CPU中设计了两个缓存:L1缓存和L2缓存,两者的差别在于时序,对于L1缓存的访问,不存在任何延时;而对于L2缓存的访问,则会延时1或2个时钟周期。

主存:也称为随机访问存储器(RAM),所有不能在高速缓存中得到满足的访问请求都会转往主存。

磁盘:磁盘唯一的问题是随机访问数据时大约慢了三个数量级。其低速的原因是因为磁盘是一种机械装置。

3. 输入/输出设备

I/O设备一般包括两个部分:设备控制器和设备本身

控制器:它是插在电路板上的一块芯片或一组芯片,这块电路板物理的控制设备。它从操作系统接收命令。例如,从设备读取数据,并且完成数据的处理。每类设备控制器都是不同的,所以,需要不同的软件进行控制。专门与控制器对话,发出命令并接受响应的软件,称为设备驱动程序

实现输入和输出的方式有三种:忙等待、中断、直接存储器访问

4. 总线:系统中有很多总线,每条总线的传输速度和功能都不同

                                           第二章 进程管理

什么是进程?

狭义定义:进程本质上是正在执行的一个程序,程序一旦运行就是进程

广义定义:进程是具有独立功能的程序关于某个数据集合的一次运行过程。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。进程由程序、数据和进程控制块(PCB)三部分组成。

1. 进程的特征:

在某一个瞬间,CPU只能运行一个进程。但在1秒钟内,它可以运行多个进程,这样就产生并行的错觉。真正的CPU在各个进程之间来回切换,称为多道程序设计。

动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

并发性:任何进程都可以同其他进程一起并发执行

独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;

异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进

2. 进程的三种基本状态

就绪状态:进程已获得除处理器外的所需资源,等待分配处理器资源,只要分配了处理器进程就可执行(可运行,但因为其他进程正在运行而暂时停止)

运行状态:进程占用处理器资源,处于此状态的进程的数目小于等于处理器的数目(该时刻进程实际占用CPU)

阻塞状态:由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理机分配给该进程,也无法运行(除非某种外部事件发生,否则进程不能运行)

3. 进程的创建和终止

导致进程创建的事件:系统初始化;正在运行的程序执行了创建进程的系统调用;用户请求创建一个新进程;一个批处理作业的初始化

在UNIX系统中,只有一个系统调用可以用来创建新的进程:folk

导致进程终止的事件:正常退出(自愿的);出错退出(自愿的);严重错误(非自愿);被其他进程杀死(非自愿)

什么是线程?

1. 定义:线程是进程的一个实体,是进程的一条执行路径

2. 线程同步的方式

互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。

信号量:它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。

事件(信号):通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。

3. 多线程:指从软件或者硬件上实现多个线程的并发技术

优点:使用多线程可以把程序中占据时间长的任务放到后台去处理,如图片、视屏的下载;发挥多核处理器的优势,并发执行让系统运行的更快、更流畅,用户体验更好

缺点:大量的线程降低代码的可读性;更多的线程需要更多的内存空间;当多个线程对同一个资源出现争夺时候要注意线程安全的问题

4. 线程的状态:运行、阻塞、就绪、终止

什么是程序?

程序是为了实现一个特定的目标而设计的一组可操作的工作步骤,对于计算机而言,程序就是系统可以识别的一组有序的指令,能指挥计算机执行我们想要它做的动作。程序储存在磁盘上,在执行时从磁盘到内存再到寄存器,最后被CPU执行。

进程与线程的区别

进程本质上是正在执行的一个程序;线程是进程的一个实体,是进程的一条执行路径

  1. 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行;一个进程可包含多个线程,线程属于进程
  2. 基本单位:进程是资源分配的基本单位,线程是CPU调度和分派的基本单位
  3. 地址空间:进程拥有独立的地址空间,同一进程中的线程共享相同的地址空间
  4. 健壮性:多进程比多线程程序要健壮。一个线程死掉整个进程就死掉了,但是在保护模式下,一个进程死掉对另一个进程没有直接影响

有了进程为什么还要线程

  1. 使用线程可以减少程序的响应时间
  2. 与进程相比,线程的创建和切换开销更小
  3. 使用多线程能简化程序的结构,使程序便于理解和维护
  4. 一个非常复杂的进程可以分成多个线程来执行

同步和互斥

进程(线程)之间的两种关系:同步与互斥

1. 区别:

所谓互斥,是指在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。

所谓同步,是指在不同进程之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。

2. 联系

同步是一种更为复杂的互斥,而互斥是一种特殊的同步。也就是说互斥是两个线程之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要安照某种次序来运行相应的线程(也是一种互斥)。

进程和程序的区别

  1. 程序是永存的,是静态的,本身只是一组有序指令的集合,保存在硬盘上,除非手动删除掉,否则永远存在;进程是暂时的,是动态的,进程是程序在数据集上的一次执行,有创建有撤销,具备生命周期,存在是暂时的
  2. 进程能并发执行,而程序不能并发执行
  3. 进程和程序不是一一对应的:一个程序可对应多个进程;一个进程可以执行一个或几个程序

进程间通信(IPC Inter Process Communication)

  1. 定义:是指在不同进程之间传播或交换信息
  2. 进程间的通信方式:管道、消息队列、信号量、共享内存以及套接字

管道:管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;

消息队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。

信号量:主要作为进程间以及同一进程不同线程之间的同步手段。

共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。

套接口:更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

管道

1. 管道,通常指无名管道,是UNIX系统IPC最古老的形式。

特点:它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。

它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。

它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。

2. 命名管道FIFO

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今夕何夕sy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值