操作系统学习

发布时间:2026/5/23 0:52:40

操作系统学习 进程进程的基本概念组成程序是静态的是个存放在磁盘里的可执行文件就是一系列的指令集合进程是动态的是程序的一次执行过程同一程序多次执行会对应多个进程操作系统如何区分各个进程当进程被创建时操作系统会给进程分配一个唯一的不重复的idPIDPCB进程控制块。操作系统需要对各个并发运行的进程进行管理但凡管理时所需要的信息都会被放在PCB中PCB是进程存在的唯一标志当进程被创建时操作系统为其创建PCB当进程结束时会回收其PCB。操作系统对进程进行管理规则所需的信息都存在PCB中PCB中有1.进程描述信息2.进程控制和管理信息3.资源分配清单4.处理机相关信息。一个进程实体进程映像由PCB程序段数据段组成。【PCB是给操作系统用的。程序段数据段是给进程自己用的与进程自身的运行逻辑有关】进程是动态的进程实体是静态的。进程实体反应了进程在某一时刻的状态。进程是进程实体的运行过程是系统进行资源分配和调度的一个独立单位【一个进程被“调度”就是指操作系统决定让这个进程上CPU运行】进程的特点1.动态性最基本的特征2.并发性3.独立性进程是独立获得资源独立接收调度的基本单位4.异步性5.结构性进程的状态与转换进行的状态 创建态进程正在被创建操作系统为继承分配资源初始化PCB就绪态已经具备运行条件但由于没有空闲CPU而暂时不能运行运行态占有CPU并在CPU上运行阻塞态因等待某一件事而暂时不能运行终止态进程正在从系统中撤销操作系统会回收进程拥有的资源撤销PCB三种基本状态就绪态 执行态 阻塞态运行态-阻塞态是一种进程自身做出的主动行为阻塞态-就绪态不是进程自身控制的是一种被动行为进程PCB中会有一个变量state来表示进程当前的状态进程的组织——链式方式进程的组织——索引方式进程控制进程控制的主要功能是对系统中的所有进程实施有效的管理它具有创建新进程撤销已有进程实现进程状态转换等功能。进程控制就是要实现进程状态转换用原语来实现原语是一种特殊的程序它的执行具有原子性。也就是说这段程序的运行必须一气呵成不可中断。原语可以用“关中断指令”和“开中断指令”这两个特权指令只能让内核程序使用运行在核心态实现原子性正常情况CPU每执行完一条指令都会例行检查是否有中断信号需要处理如果有则暂停运行当前这段程序转而执行相应的中断处理程序。执行“关中断指令CPU将不再例行检查中断信号直到“开中断指令”之后才会恢复检查。原语要完成的三类事情1.更新PCB中的信息修改进程状态state保存/恢复运行环境。2.将PCB插入合适的队列。3.分配/回收资源。进程通信进程间通信IPC是指两个进程之间产生数据交互各进程拥有的内存地址空间相互独立需要有操作系统的支持才可以完成进程之间的通信进程通信1.共享存储 2.消息传递 3.管道通信共享存储*为了避免出错各个进程对共享空间的访问应该是互斥的*各个进程可使用操作系统内核提供的同步互斥工具如PV操作设置一个共享内容区域要给他们添加段表项/页表项即可将同一片共享内存映射到各个进程的地址空间中基于存储区的共享操作系统在内存中划出一块共享存储区数据的形式存放位置都由通信进程控制而不是操作系统。这种共享方式速度很快是一种高级通信方式。基于数据结构的共享比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢限制多是一种低级通信方式。消息传递进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的 “ 发送消息/接收消息 ” 两个原语进行数据交换。直接通信方式消息发送进程要指明接收进程的ID间接通信方式通过“信箱”间接地通信。因此又称 “新型通信方式”可以多个进程往同一个信息send消息也可以多个进程从同一个信箱中receive消息管道通信“管道” 是一种特殊的共享文件又名pipe文件。其实就是在内存中开辟一个大小固定的内存缓冲区不同于共享存储要求数据的读写是先进先出管道类似一个循环队列1.管道只能采用半双工通信某一段时间内只能实现单向的传输。如果要实现双向同时通信则需要设置两个管道2.各进程要互斥地访问管道由操作系统实现3.当管道写满时写进程将阻塞直到读进程将管道中的数据取走即可唤醒写进程。4.当管道读空时读进程将阻塞直到写进程往管道中写入数据即可唤醒读进程5.管道中地的数据一旦被读出就彻底消失。因此当多个进程读同一管道时可能会错乱。两种解决方案1.一个管道允许多个写进程一个读进程。2.允许有程多个写进程多个读进但系统会让各个读进程轮流从管道中读数据。信号区分信号量——实现进程间的同步、互斥信号——实现进程间通信IPC信号用于通知进程某个特定事件已经发生。进程收到一个信号后对该信号进行处理注1.不同的操作系统对信号类型的定义不一样。 2.通常用宏定义常量表示信号名。实现原理——信号的发生与保存保存在每个进程的PCB中用两个N bit位向量表示待处理信号、被阻塞信号用户进程之间可以发送信号进程之间允许发送的信号类型是有限制的内核进程也可以给用户进程发送信号实现原理——信号的处理when什么时候处理信号当进程从内核态转为用户态如系统调用返回或中断处理返回时。例行检查是否有待处理信号如果有就处理信号How怎么处理信号1.执行操作系统为此类信号设置的缺省默认信号处理程序 某些信号默认忽略不做处理2.执行进程为此类信号设置用户自定义处理程序自定义处理程序将覆盖默认的信号处理程序运行结束后通常会返回进程的下一条指令继续执行除非信号处理程序将进程阻塞或终止一旦处理了某个信号就将pending位置重置为0重复收到同类信号将被简单地丢弃因为仅有1bit记录一类待处理信号当同时收到多个不同类信号时通常先处理序号更小的信号每个进程都有自己默认的处理程序各进行各的相互独立信号与异常信号 可以作为 异常 的配套机制让进程对操作系统的异常处理进行补充在进程运行过程中特殊事件引发 异常 操作系统内核负责捕获并处理异常1.有些异常可以由内核完成全部处理如缺页异常此时就不必再使用信号机制2.有些异常无法由内核完成全部处理可能还需要用户进程配合。此时可以用 “ 信号机制 ” 与 “ 异常机制 ” 相互配合。可以自定义某信号的处理程序按实际需求去解决如何处理 线程线程概念多线程模型引入 “ 线程 ” 来增加并发度。线程成为了程序执行流的最小单位并发的被CPU处理“ 轻量级进程 ”线程时一个基本的CPU执行单元也是程序执行流的最小单位。引入线程之后进程之间可以并发进程内的各线程之间也可以并发提升了系统的并发度使得一个进程内也可以并发处理各种任务引入线程之后进程只作为除CPU之外的系统资源的分配单元引入线程之后系统开销减小同一进程内的线程切换开销小。进程切换开销大。线程只是处理机调度的基本单位系统资源分配是分配给进程的线程的实现方式多线程模型线程的实现方式1.用户级线程 2.内核级线程用户级线程早期操作系统只支持进程不支持线程当时的 “ 线程 ” 是由线程库实现的很多编程语言提供了强大的线程库可以实现线程的创建、销毁、调度等功能1.这些线程的管理工作由应用程序通过线程库完成。所有的线程工作都由应用程序负责包括线程的切换2.线程切换不涉及请求操作系统服务由线程库应用程序自己完成不需要操作系统干涉在用户态下即可完成3.操作系统意识不到线程的存在。只有用户才能感知到用户级线程的实现4.优缺点优点切换在用户空间即可完成开销小效率高缺点 其中一个用户级线程被阻塞整个进程都会被阻塞并发度不高。CPU的调度单位仍然是进程操作系统是给进程分配时间的。多个线程不可在多核处理机上并发运行。内核级线程操作系统可以支持的线程操作系统视角也可以看得到的线程1.内核级线程的管理工作由操作系统内核完成2.线程调度、切换等工作都是由内核负责因此内核级线程的切换必然需要在核心态下才能完成3.操作系统会为每个内核级线程建立相应的TCB线程控制块通过TCB对线程进行管理。“内核级线程”就是“从操作系统内核视角看能看到的线程”4.优缺点优点一个线程被阻塞别的线程还可以继续执行并发能力强。多线程可在多核处理机上并发执行缺点一个用户进程会占用多个内核级线程线程切换由操作系统内核完成需要切换到核心态因此线程管理的成本高开销大多线程模型将用户级线程和内核级线程相结合一对一模型多对一模型***内核级线程才是处理机分配的单位多对多模型内核级线程用户级线程线程的状态与转换与进程的转化类似线程的组织与控制与进程的组织与控制类似进程PCB。线程TCB线程控制块可将多个TCB组织成一张线程表处理机调度调度的基本概念由某种规则来解决任务顺序先后调度的层次作业一个具体的任务用户向系统提交了一个作业 ~ 用户让操作系统启动了一个程序来处理一个具体的任务高级调度作业调度按一定的原则从外存的作业后备队列中挑选一个作业调入内存并创建进程。每个作业只调入一次调出一次。作业调入时会建立PCB调出时才撤销PCB低级调度进程调度/处理机调度按照某种策略从就绪队列中选取一个进程将处理机分配给它。进程调度是操作系统中最基本的一种调度在一般的操作系统中都必须配置进程调度。进程调度的频率很高一般几十毫秒一次。中级调度内存调度按照某种策略决定将哪个处于挂起状态的进程重新调入内存内存不够时可将某些进程的数据调出外存。等进程空闲或者进程需要运行时再重新调入内存。暂时调到外村等待的进程状态为挂起状态。被挂起的进程PCB会被组织成挂起队列一个进程可能会被多次调出、调入内存因此中级调度发生的频率要比高级调度更高进程的挂起态与七状态模型暂时调到外存等待的进程状态为挂起状态挂起态suspend挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态进程调度的时机目的是为了进程切换进程在操作系统内核程序临界区中不能进行调度与切换临界资源一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源临界区访问临界资源的那段代码进程调度的方式进程的切换与过程进程切换是指一个进程让出处理机由另一个进程占用处理机的过程调度器/调度程序支持内核级线程的操作系统调度程序的处理对象是内核级线程进程作为资源分配的基本单位闲逛进程调度算法的评价指标cpu利用率cpu忙碌的时间占总时间的比例系统吞吐量单位时间内完成作业的数量周转时间指从作业被提交给系统开始到作业完成为止的这段时间间隔等待时间指进程/作业处于等待处理机状态时间之和等待时间越长用户满意度越低响应时间用户提交请求到首次产生响应所用的时间调度算法先来先服务FCFS按照到达的先后顺序调度事实上就是 等待时间越久的越优先得到服务用于作业调度时考虑哪个作业先到达后备队列用于进程调度时考虑的是哪个进程先到达就绪队列短作业优先SJF最短的作业/进程优先得到服务最短剩余时间优先算法SRTN对于FCFS和SJF两种算法高响应比优先综合考虑等待时间和要求服务的时间总结进程同步和进程互斥进程同步进程之间的直接制约关系进程具有异步性各并发执行的进程以各自独立的、不可预知的速度向前推进进程通信——管道通信进程同步就是解决进程异步时出现的进程先后顺序的问题两个进程要合作来完成某个任务同时要确保他们工作的顺序进程互斥进程之间的间接制约关系并发执行的进程会有共享资源【宏观上的同步共享】临界资源一个时间段内只允许一个进程使用生产者消费者问题在前面的动作没有完成之前要添加一个V操作在后面的动作没有开始之前要添加一个P操作。生产者向缓冲区放入一个产品之后要执行V操作消费者从缓冲区取出一个产品之前要执行P操作semaphore mutex1; //互斥信号量实现对缓冲区的互斥访问semaphore emptyn; //同步信号量表示空闲缓冲区的数量semaphore full0; //同步信号量表示产品的数量也即非空缓冲区的数量生产者生成一个产品和消费者使用一个产品这两个操作是否能放到PV操作之间呢可以放进去但是不建议会导致临界区代码过长各个代码对临界区的上锁时间过长多生产者多消费者问题1.关系分析。分析各进程之间同步、互斥关系。2.整理思路。确定P、V操作的顺序。 互斥前V后P[在先执行的进程之后进行V操作在后执行的进程之前执行P操作]3.设置信号量。根据题目条件确定信号量初值。互斥信号量初值一般为1同步信号量初始值要看对应资源的初始值是多少同步信号量apple0orange0plate1用来表示此时盘子是否为空互斥信号量mutex1如果去掉互斥信号量mutex和互斥信号量的操作如果盘子缓冲区容量为2父亲进程和母亲进程可能同时访问缓存区导致信息覆盖【缓冲区不为1时必须要设置缓冲区】

相关新闻