操作系统

1 操作系统简介

1.1 操作系统概念
  • 操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的计算机程序。通过合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件,为上层的应用程序、用户提供简单易用的服务。
1.2 操作系统功能
  • 管理资源:处理机管理(CPU)管理,存储器管理,文件管理,设备管理
  • 为用户提供服务:命令接口,程序接口,GUI
  • 对硬件进行扩展
1.3 操作系统的特征
  • 并发是指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。操作系统的并发性指计算机系统中同时运行着多个程序。一个单核处理机(CPU)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行,当今的计算机,一般都是多核CPU,比如Intel的第八代i3处理器就是4核CPU。(并行是指两个或多个事件同一时刻发生)
  • 共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。有两种资源共享方式:互斥共享(系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源)和同时共享(系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问)。共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。
  • 虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。虚拟技术包含空分复用技术和时分复用技术,时分复用技术可以让单核处理机运行多个程序,交替服务,如虚拟处理机。空分复用技术可以让4GB运行内存的电脑同时运行远大于4GB的程序,如虚拟存储器技术。
  • 异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
  • 并发和共享是共存的,没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征。

2 OS的运行机制和体系结构

  • 处理器处于用户态(目态)时,CPU只能执行非特权指令;处理器处于核心态(管态)时,特权指令、非特权指令都能执行。操作系统的内核程序是系统的管理者,运行在核心态。而为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态。
  • 操作系统的内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序,包括时钟管理程序,中断处理程序,原语(一旦运行不可中断),进程和设备管理程序。
  • 操作系统的体系结构:大内核微内核

3 中断

  • 中断分为内中断(异常、陷入、故障、终止)和外中断(I/O中断请求、人为干预)。
  • 发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作需要使用特权指令,因此CPU要从用户态转为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行。“用户态→核心态”是通过中断实现的。并且中断是唯一途径,而“核心态→用户态”的切换是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”。

4 系统调用

  • 系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,程序接口由一组系统调用组成。应用程序可以发出系统调用请求来获得操作系统的服务。凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
  • 系统调用的分类

    传递系统调用参数→执行陷入指令(用户态)→执行系统调用相应服务程序(核心态)→返回用户程序。

5 进程

5.1 进程的定义
  • 程序就是一个指令序列,程序的代码放在程序段内,程序运行过程处理的数据放在数据段内(如变量)。早期计算机(只支持单道程序),只能有一个程序占有内存、CPU、I/O设备,CPU只需对放入内存的指令序列一行一行的进行操作。引入多道程序技术之后,内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念。
  • 系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(进程标识符,处理机状态。进程调度信息,进程控制信息)。程序段、数据段、PCB三部分组成了进程实体(静态的)。一般情况下,把进程实体就简称为进程(动态的),所谓创建进程,实质上是创建进程实体的PCB;撤销进程,实质上是撤销进程实体中的PCB。PCB是进程存在的唯一标志。进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
  • 当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的ID,用于区分不同的进程(类似于身份证号),当进程切换时需要把进程当前的运行情况记录下来保存在PCB中,如程序计数器的值表示了当前程序执行到哪一句。
5.2 进程的组织方式
  • 链接方式。按照进程将PCB分为多个队列,操作系统持有各个队列的指针。执行指针:指向当前处于运行态(执行态)的进程;就绪队列指针:指向当前处于就绪态的进程;阻塞队列指针:指向当前处于阻塞态的进程,很多操作系统还会根据阻塞原因不同,再分为多个阻塞队列。
  • 索引方式。根据进程状态的不同,建立几张索引表,操作系统持有指向索引表的指针。执行指针:指向当前处于运行态(执行态)的进程;就绪表指针:指向当前处于就绪态的进程;阻塞表指针:指向当前处于阻塞态的进程,很多操作系统还会根据阻塞原因不同,再分为多个阻塞队列。
  • 除了运行态,就绪态,阻塞态还有两种状态。
5.3 进程的特征

5.4 进程的状态转换

5.5 进程通信

进程通信是指进程之间的信息交换。进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。一个进程不能直接访问另一个进程的地址空间,但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法:共享存储,消息传递,管道通信。

  • 共享存储。两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现),共享空间和同步互斥工具由操作系统提供。
  • 管道通信。“管道”是指用于连接读写进程的一个共享文件,又名pipe文件,其实就是在内存中开辟一个大小固定的缓冲区。数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。如果没写满,就不允许读。如果没读空,就不允许写。数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个。
  • 消息传递。进程间的数据交换以格式化的消息(类似于报文)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。有两种方式:直接通信方式,消息直接挂到接收进程的消息缓冲队列上;间接通信方式,消息要先发送到中间实体(信箱)中,因此也称“信箱通信方式”。
5.6 进程的同步和互斥
5.6.1 进程的同步
  • 进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进,但是有时候必须按照一定的顺序执行多个操作,如何解决这种异步问题,就是“进程同步”所讨论的内容。
  • 同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。
5.6.2 进程的互斥
  • 一个时间段内只允许一个进程使用的资源称为临界资源,对临界资源的访问,必须互斥地进行。进程互斥是指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。
  • 进程互斥遵循的原则。
5.7 进程死锁
  • 在并发环境下,各进程互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是死锁,发生死锁后若无外力干涉,这些进程都将无法向前推进。至少有两个或者两个以上的进程同时发生死锁。
  • 饥饿是指由于长期得不到想要的资源,某进程无法向前推进的现象。
  • 死循环是指某进程执行过程中一直跳不出某个循环的现象。
  • 产生死锁必须同时满足一下四个条件,只要其中任一条件不成立,死锁就不会发生。
    1.互斥条件,只有对必须互斥使用的资源的争抢才会导致死锁。
    2.不剥夺条件:进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。
    3.请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占有,此时请求进程被阻塞,但又对自己已有的资源保持不放。
    4.循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得的资源同时被下一个进程所请求。
  • 死锁的处理策略。

6 线程

6.1 线程的定义

进程的出现可以使得各个程序可以并发的执行(如QQ和游戏同时运行),有的进程可能需要“同时”做很多事(如QQ可以一边聊天,一边传文件),传统的进程只能串行地执行一系列程序。为此,引入了“线程”。进程包含多个线程,线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度。进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。

6.2 线程的属性

6.3 线程的实现方式
  • 用户级线程。用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预。
  • 内核级线程。内核级线程的管理工作由操作系统内核完成。线程调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。
  • 在同时支持用户级线程和内核级线程的系统中,可采用二者组合的方式:将n个用户级线程映射到m个内核级线程上(n >= m)。
6.4 多线程模型
  • 多对一模型。
  • 一对一模型。
  • 多对多模型

7 处理机调度

  • 当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。处理机调度,就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程的并发执行。
  • 高级调度(作业调度)。按一定的原则从外存上处于后备队列的作业中挑选一个(或多个)作业,给他们分配内存等必要资源,并建立相应的进程(建立PCB),以使它(们)获得竞争处理机的权利。
  • 引入了虚拟存储技术之后,可将暂时不能运行的进程调至外存等待,暂时调到外存等待的进程状态为挂起状态中级调度(内存调度),就是要决定将哪个处于挂起状态的进程重新调入内存。
  • **低级调度(进程调度),**其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。
7.1 逻辑地址和物理地址
  • 变量存放的相对地址(相对于进程在内存中的起始地址而言的地址)是X。CPU想要找到变量在内存中的物理地址(实际存放位置),只需要用进程的起始地址+X即可。相对地址又称逻辑地址,绝对地址又称物理地址。
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值