当前位置: 首页 > article >正文

408计算机考研-计算机操作系统笔记-王道

计算机操作系统笔记-王道1.1.11.1.2操作系统的概念与功能操作系统的概念定义操作系统的功能和目标--向上提供方便易用的服务总结1.1.3 操作系统的特性并发与共享虚拟异步总结1.2_操作系统的发展和分类手工阶段批处理阶段--单道批处理系统多道批处理系统分时操作系统实时操作系统总结1.3.1_操作系统的运行机制程序是如何运行的内核程序与应用程序特权指令和非特权指令内核态、用户态的切换总结1.3.2 中断和异常中断的作用中断类型中断的分类中断机制基本原理中断向量表总结系统调用系统调用与库函数系统调用过程总结1.4 操作系统的体系结构操作系统的内核总结1.4 操作系统体系结构新增分层结构模块化外核宏内核大内核微内核1.5操作系统引导1.6 虚拟机Hypervisor2.1.12.1.2 进程的概念、组成、特征2.1.4 进程控制2.1.5_1 进程通信共享存储消息传递消息传递-直接通信方式消息传递-间接通信方式进程通信-管道通信总结2.1.5_2 信号信号的作用总结2.1.6_1 线程的概念与特点线程属性2.1.6_2 线程的实现方式和多进程模型线程实现方式-用户级线程线程实现方式-内核级线程多线程模型总结2.1.6_3 线程的状态与转换2.2.1调度的概念、层次调度的三个层次--高级调度调度的三个层次--低级调度调度的三个层次--中级调度进程的挂起状态和七状态模型三层调度的联系和对比总结2.2.2_12.2.4 进程调度的时机、切换与过程调度的方式进程调度时机进程调度的方式进程的切换与过程总结2.2.2_2 调度和闲逛进程闲逛进程、调度器2.2.3 调度的目标调度算法的评价指标cpu利用率系统吞吐量周转时间响应时间总结2.2.5_1 调度算法先来先服务短作业优先高响应优先先来先服务(FCFS)短作业优先算法(SJF)高响应比优先(HRRN)总结 (重要2.2.5_2调度算法时间片轮转RR)优先级调度多级反馈队列时间片轮转(RR)优先级调度算法多级反馈队列调度算法总结2.2.5_3 调度算法多级队列调度算法2.2.6 多处理机调度负载均衡、处理机亲和性方案一公共就绪队列私有就绪队列总结2.3.1 同步和互斥基本概念同步的概念互斥的概念总结2.3.2_1 进程互斥的软件实现方法单标志法双标志先检查法peterson算法总结2.3.2_2 进程互斥的硬件实现方法中断屏蔽方法TestAndSet指令Swap指令总结2.3.3 互斥锁2.3.4_1 信号量机制整型信号量记录型信号量总结2.3.4_2 用信号量机制实现进程互斥、同步、前驱关系信号量机制实现进程互斥信号量机制实现进程同步信号量机制实现前驱关系总结2.3.5_1_1 生产者-消费者问题总结2.3.5_1_2 多生产者-多消费者问题回顾1.1.11.1.2操作系统的概念与功能操作系统的概念定义操作系统是指控制和管理整个计算机系统的硬件和软件资源合理组织调度计算机的工作和资源分配以提供给用户和其他软件方便的接口环境他是计算机系统里最基本的系统软件。作为系统的管理者其目标是安全与高效其具备功能是处理机管理存储器管理文件管理设备管理用打开QQ的过程举个例子通过复盘qq的执行过程可以记住这四个功能操作系统的功能和目标–向上提供方便易用的服务操作系统提供的交互服务GUI:图形化用户接口Graphical User Interface)用户可以使用的图形化界面进行操作而不需要记忆命令参数等。命令接口联机式命令接口联机命令接口交互式命令接口比如winR的cmd窗口就是联机命令接口给一条命令执行一条脱机命令接口 脱机命令接口批处理命令接口比如批处理文件*.bat文件执行后会一次性执行多条命令程序接口可以在程序中进行系统调用来使用程序接口。普通用户不能使用程序接口只能通过程序代码间接使用。有的教材称 系统调用广义指令没有任何软件支持的计算机成为裸机在裸机上安装操作系统,可以提供资源管理功能和方便用户的服务功能将裸机改造成功能更强、使用更加方便的机器。通常覆盖了软件的机器叫做扩充机器又称为虚拟机。总结1.1.3 操作系统的特性并发 共享 虚拟 异步并发与共享并发和共享二者互存没有并发就没有共享没有共享并发就失去了意义。并发指两个或多个事件同一时间间隔内发生。宏观上是同时发生的微观上是交替发生的。并行宏观和微观都是同一时间发生。操作系统是伴随“多道程序技术”而出现的。因此操作系统和程序并发是一起但是的。注意单核cpu同一时刻只能执行一个程序各个程序只能并发的执行。多核cpu单一时刻可以同时执行多个程序多个程序可以并发的执行。共享指资源共享指系统中的资源可供内存中多个并发执行的进程共同使用。-----互斥共享方式可以提供给多个进程使用但是一个时间段里只有一个进程访问|资源共享包含----|-----同时共享方式可以提供给多个进程使用可以一个时间段里同时多个进程访问然而同时共享里的同时依旧不是微观上的同时而是异步状态的同时即交替共享。互斥共享举例摄像头同一个时间段只能服务一个进程比如QQ和微信不可以同时视频聊天。同时共享方式使用QQ微信可以同时发送文件宏观上是同时读取发送的微观上两个进程是交替访问硬盘的。并发与共享的关系虚拟虚拟是指将一个物理上的实体变为若干个逻辑的对应物。物理实体前者是实际存在的而逻辑上对应物后者是用户感受到的。在操作系统中“虚拟Virtualization”是一种核心设计思想其本质是通过软件或硬件技术将有限的物理资源如CPU、内存、存储、设备等抽象为多个逻辑上的独立资源从而让多个进程或用户“感觉”自己独占完整的资源实现资源的高效利用、隔离性和安全性。虚拟的核心目的资源复用让多个进程共享同一物理资源避免闲置浪费。隔离性防止进程间相互干扰如一个进程崩溃不影响其他进程。安全性限制进程对资源的访问权限如用户程序不能直接操作硬件。简化编程提供统一的资源视图如虚拟内存地址空间隐藏物理细节。-----空分复用如虚拟存储器技术|虚拟技术 --------|-----时分复用技术如虚拟处理器显然如果失去了并发性则一个时间段内系统只能运行一道程序则虚拟性失去了意义。因此没有并发性就谈不上虚拟性异步异步是指在多道程序环境下允许多个程序并发执行但由于资源有限进程的执行不是一贯到底而是走走停停以不可预知的速度进行这就是进程的异步性。如果失去了并发性即系统只能一贯到达允许一个程序就没有异步的可能。所以只有系统有并发性才有可能导致异步性。总结理解并发和并行的区别并发和共享互为存在条件根据上面例子可以看出没有并发和共享就谈不上虚拟和异步因此并发和共享是操作系统的两个最基本特征。1.2_操作系统的发展和分类手工阶段手工阶段每执行一段程序都要装/取纸带可以看出手工阶段的计算机缺点用户独占全机人机速度矛盾导致资源利用率极低。批处理阶段–单道批处理系统引入脱机输入/输出技术外围机磁带完成并由监督程序负责控制作业的输入、输出磁带的读写速度比纸带快很多并且监督程序读取程序要比手动输入纸带快得多。优点缓解了一定程度的人机速度矛盾资源利用率提升。缺点内存中只能有一道程序运行只有该程序运行结束后才可以调入下一道程序cpu有大量时间是在空闲等待I/O完成。资源利用率很低。多道批处理系统操作系统正式诞生用于多道程序并发运行。主要优点多道程序可以并发执行共享资源。资源利用率提升cpu和其他资源更能保持“忙碌”状态系统吞吐量增大。主要缺点用户响应时间长没有人机交互功能用户提交作业后只能等待计算机处理完成中间不可以控制自己提交的作业无法调试程序。分时操作系统分时操作系统计算机以时间片为单位轮流为各个用户/作业服务各个用户可以通过计终端与计算机交互。主要优点用户请求可以被及时响应解决了人机交互问题。允许一个用户同时使用一台计数机并且用户对于计算机的使用是相互独立感觉不到别人的存在。主要缺点不能优先处理一些紧急任务。操作系统对于各个用户/作业都是完全公平的循环的为每个用户/作业服务一个时间片不区分任务的紧急性。实时操作系统实时操作系统主要优点能优先响应一些紧急任务某些紧急任务不需要时间片的排队。在实时操作系统下计算机的系统接收到外部信号后及时处理并且在严格的时间内处理完事件。实时操作系统的主要特点是技术性和可靠性。----硬实时系统必须在绝对严格的规定时间内完成处理如导弹系统自动驾驶系统|实时操作系统 —|-----软实时系统能接收偶尔违反时间规定如12306总结1.3.1_操作系统的运行机制程序是如何运行的c语言代码通过编译器变成机器指令cpu一条一条的执行这些指令。这里讲的指令是底层的指令而不是控制台里的那些指令。内核程序与应用程序内核程序用来实现操作系统的程序很多内核程序组成了“操作系统的内核”或简称内核Kernel),内核是操作系统最重要最核心的部分也是最接近硬件的部分。实际上一个操作系统只要有内核就够了操作系统的功能未必都在内核里如GUI图形化界面。特权指令和非特权指令操作系统的内核作为“管理者”有时会让cpu执行一些“特权指令”如内存清零指令。这些指令影响巨大只允许”管理者“———即操作系统的内核来使用。普通程序员写的程序就是”应用程序”应用程序只能使用“非特权指令”如加法指令减法指令等。在cpu设计和产生的时候就划分了特权指令和非特权指令因此cpu执行一条指令前就可以判断其类型。为了区分运行的是内核程序还是应用程序划分了”内核态“和”用户态“处于内核态的可以执行特权指令。处于用户态说明此时正在运行的是应用程序此时只能执行非特权指令。拓展cpu有一个寄存器叫做程序状态字寄存器PSW其中有个二进制位1表示”内核态“0表示”用户态“。别名内核态核心态管态用户态目态内核态、用户态的切换① 刚开机时CPU为“内核态”操作系统内核程序先上CPU运行②)开机完成后用户可以启动某个应用程序③操作系统内核程序在合适的时候主动让出CPU让该应用程序上CPU运行,会用一条特权指令将PSW的标志位设置为”用户态“。④ 应用程序运行在“用户态”⑤此时一位猥琐黑客在应用程序中植入了一条特权指令企图破坏系统…⑥ CPU发现接下来要执行的这条指令是特权指令但是自己又处于“用户态“⑦这个非法事件会引发一个中断信号,cpu检测到中断信号后会立即变成核心态并停止当前运行的应用程序转而去处理中断信号的内核程序。⑧“中断”使操作系统再次夺回CPU的控制权⑨操作系统会对引发中断的事件进行处理处理完了再把CPU使用权交给别的应用程序内核态→用户态:执行一条特权指令–修改PSW的标志位为“用户态”这个动作意味着操作系统将主动让出CPU使用权用户态→内核态:由“中断”引发硬件自动完成变态过程触发中断信号意味着操作系统将强行夺回CPU的使用权除了非法使用特权指令之外还有很多事件会触发中断信号。一个共性是但凡需要操作系统介入的地方都会触发中断信号总结1.3.2 中断和异常中断的作用“中断”是让操作系统内核夺回CPU使用权的唯一途径中断类型1.内中断与当前执行的指令有关中断信号来源于cpu内部。可能由除法÷0异常、用户态执行特权指令、或主动触发。有时候应用程序想请求操作系统内核的服务此时会执行一条特殊的指令--陷入指令该指令会引发一个内部中断信号,系统调用就是利用陷入指令将cpu控制权交给操作系统然后执行特权指令的。陷入指令不是特权指令可以在用户态下执行陷入指令可以将cpu控制权交给系统2.外中断与当前执行指令无关中断信号来源于cpu外部一般是外设中断如键盘中断,时钟中断。时钟中断可以将cpu的使用时间分为多个时间片实现并发性。中断的分类内中断一般被称为异常考试一般指狭义的中断也就是外中断也称中断。注意下图错误整数÷0是故障中断不是终止中断中断机制基本原理中断向量表不同的中断信号需要用不同的中断处理程序来处理。当CPU检测到中断信号后会根据中断信号的类型去查询“中断向量表”以此来找到相应的中断处理程序在内存中的存放位置。中断处理程序一定是在内核态运行的总结题外话内/外中断的分别检测时机是什么时候内中断由CPU执行指令时或执行后直接触发与当前指令的执行流程同步。检测由CPU内部的逻辑单元如算术逻辑单元ALU、控制单元在指令执行的不同阶段完成。外中断由CPU外部设备触发与当前指令的执行异步。检测由外部设备通过中断控制器向CPU发送信号CPU在指令执行间隙或特定周期检查中断请求。系统调用“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口可以理解为一种可供应用程序调用的特殊函数应用程序可以通过系统调用来请求获得操作系统内核的服务系统调用与库函数不涉及系统调用的库函数如“取绝对值”的函数涉及系统调用的库函数如“创建一个新文件”的函数应用程序通过系统调用请求操作系统的服务统一掌管因此凡是而系统中的各种共享资源都由操作系统内核与共享资源有关的操作(如存储分配、I/0:桑作、文件管理等)都必须通过系统调用的式向操作系统内核提出服务请求由操作系统内核代为完成。这样可以保证系统的稳定性和安全性防止用进行非法操作。系统调用过程涉及汇编看个大概不必死磕系统调用的基本流程系统调用的完整过程可分为用户态准备、触发中断、内核态处理和返回用户态四个阶段具体步骤如下用户态准备参数传递用户程序将系统调用所需的参数如文件路径、缓冲区地址、操作类型通过寄存器或栈传递给内核。触发中断用户态 → 内核态专用指令触发用户程序通过执行系统调用专用指令如x86的syscall/sysenterARM的SVC主动请求内核服务。内核态处理参数验证与安全检查内核首先验证用户传递的参数是否合法如指针是否指向用户空间、文件描述符是否有效。返回用户态恢复上下文内核通过sysretx86或ERETARM指令恢复用户态的寄存器状态如PC、EFLAGS。切换回用户态的代码段和数据段继续执行被中断的用户程序。大致流程传递系统调用参数执行陷入指令(用户态)执行相应的内请求核程序处理系统调用(核心态)→返回应用程序注意:1.陷入指令是在用户态执行的执行陷入指令之后立即引发一个内中断使CPU进入核心态2.发出系统调用请求是在用户态而对系统调用的相应处理在核心态下进行总结陷入指令又可以被称作trap指令、访管指令1.4 操作系统的体系结构原语是一种特殊的程序:具有原子性。也就是说这段程序的运行必须一气呵成不可被“中断”时钟管理利用时钟中断实现计时功能*Ubuntu、Centos 的开发团队其主要工作是实现非内核功能而内核都是用了 Linux 内核操作系统的内核时钟管理中断处理原语这些与硬件紧密相连的模块必须放在内核里而对系统资源进行管理的功能如进程管理存储器管理、设备管理功能可以放在内核外因为他们不会直接涉及到硬件。将进程管理存储器管理、设备管理等功能放在内核里的是大内核架构另外一种则是微内核。内核必须运行在内核态非内核功能运行在用户态。因此大内核和微内核的性能有一点差异微内核在处理内核模块功能时需要更频繁的内核态与用户态转换需要更多时间开销注意状态切换过程需要时间消耗大内核也有缺点内核代码庞大结构混乱难以维护总结典型的大内核/宏内核/单内核 操作系统Linux、UNIX典型的微内核操作系统Windows NT1.4 操作系统体系结构新增分层结构 模块化 与 外核分层结构内核分为多层每层可单向调用更底层的接口。优点1.便于调试和验证自底向上逐层调试验证2.易扩充和易维护各层之间调用接口清晰固定缺点1.仅可调用相邻低层难以合理定义各层的边界2.效率低不可跨层调用系统调用执行时间长模块化模块化是将操作系统按功能划分为若干个具有一定独立性的模块。每个模块具有某方面的管理功能并规定好各模块间的接口使各模块之间能通过接口进行通信。还可以进一步将各模块细分为若干个具有一定功能的子模块同样也规定好各子模块之间的接口。把这种设计方法称为模块-接口法。内核 主模块可加载内核模块主模块:只负责核心功能如进程调度、内存管可加载内核模块:可以动态加载新模块到内核而无需重新编译整个内核优点1.模块间逻辑清晰易于维护确定模块间接口后即可多模块同时开发2.支持动态加载新的内核模块(如:安装设备驱内动程序、安装新的文件系统模块到内核)增强OS适应性3.任何模块都可以直接调用其他模块无需采用大消息传递进行通信效率高可扩展性和高效性缺点1.模块间的接口定义未必合理、实用2.模块间相互依赖更难调试和验证外核内核负责进程调度、进程通信等功能外核负责为用户进程分配未经抽象的硬件资源且由外核负责保证资源使用安全优点1.外核可直接给用户进程分配不虚拟、不抽象的硬件资源使用户进程可以更灵活的使用硬件资源2.减少了虚拟硬件资源的“映射层提升效率缺点1.降低了系统的一致性2. 使系统变得更复杂宏内核大内核所有的系统功能都放在内核里(大内核结构的OS通常也采用了模块化的设计思想)优点1.性能高内核内部各种功能都可以直接相互调用缺点1.内核庞大功能复杂难以维护2.依赖关系复杂大内核中某个功能模块出错就可能导致整个系统崩溃微内核只把中断、原语、进程通信等最核心的功能放入内核。进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态优点1.内核小功能少、易于维护内核可靠性高2.内核外的某个功能模块出错不会导致整个系统崩溃缺点1.性能低需要频繁的切换 用户态/核心态。用户态下的各功能模块不可以直接相互调用只能通过内核的消息传递“来间接通信2.用户态下的各功能模块不可以直接相互调用,只能通过内核的消息传递“来间接通信1.5操作系统引导在使用传统BIOS启动模式初始化每个磁盘开头有主引导程序MBR),其中包括磁盘引导程序和分区表分区表记录了该磁盘的盘符位置和大小磁盘引导程序相当于一种特殊的初始化程序负责在计算机启动时加载操作系统该程序包含硬件自检与初始化、定位与加载操作系统、分区表管理与活动分区定位等功能。操作系统启动流程(BIOS)计算机通电后BIOS基本输入输出系统首先运行·进行硬件自检POST。BIOS 根据用户设置的启动顺序Boot Order定位到启动设备如硬盘。读取硬盘的第一个扇区MBR,MBR负责定位活动分区并加载其 PBR,分区引导记录Partition Boot Record简称PBR位于每个分区的第一个扇区通常是512字节与MBR扇区大小相同PBR负责加载该分区内的操作系统程序加载操作系统的核心文件如内核、初始RAM磁盘最终完成操作系统启动。PBR的强大功能题外话PBR使得支持多系统共存每个分区可拥有独立的PBR允许同一硬盘上安装多个操作系统如WindowsLinux双系统也就是说一个分区不可以存在两个系统但是硬盘可以有多个分区盘符。启动时用户可通过引导菜单选择进入哪个分区对应的操作系统。文件系统兼容性PBR中的代码需与分区文件系统类型匹配。例如FAT32分区的PBR会加载FAT32文件系统的引导程序而NTFS分区的PBR则加载NTFS兼容的代码。MBR位于硬盘第一个扇区PBR位于每个分区第一个扇区MBR的主要功能是定位活动分区并加载其PBRPBR主要功能是加载操作系统引导文件1.6 虚拟机Hypervisor第一类虚拟机直接运行在物理硬件上不依赖宿主操作系统性能接近原生硬件安全性高适合企业级应用在处理内核态指令时直接运行在硬件上作为最高特权级程序管理硬件资源虚拟机中的操作系统若执行特权指令会陷入VMM由VMM模拟执行第二类虚拟机运行在宿主操作系统之上依赖宿主系统分配资源性能较低但部署灵活依赖宿主系统分配资源虚拟机中的特权指令需通过宿主系统间接处理性能损耗较大且隔离性较弱适合个人开发和测试场景。以下是具体分析2.1.12.1.2 进程的概念、组成、特征程序是静态的存储在磁盘里的可执行文件或代码是一系列指令的集合。进程process是动态的是程序的一次执行。当进程被创建时操作系统会为该进程分配一个唯一的、不重复的“身份证号”–PID(Process lD进程ID).PCB-记录进程的相关信息-进程存在的唯一标志PCBProcess Control Block进程控制块是操作系统用于管理进程的核心数据结构它记录了进程运行所需的关键信息确保操作系统能够正确调度、控制和协调进程的执行。一个进程实体进程映像由PCB、程序段、数据段组成。进程是动态的进程实体是静态的。进程实体反应了某一时刻进程的状态。进程是进程实体的运行过程是系统资源分配和调度的一个独立单位。进程特性2.1.4 进程控制进程控制的主要功能是对系统中的所有进程实施有效的管理它具有创建新进程、撤销已有进程、实现进程状态转换等功能。进程的状态转换需要原语实现原语是一种特殊的程序执行具有原子性运行必须一气呵成不可中断。如果不能“一气呵成”就有可能导致操作系统中的某些关键数据结构信息不统一的情况这会影响操作系统进行别的管理工作原子性是靠关中断和开中断两个特权指令实现。关中断后cpu不会检测中断信号而是执行开中断后才恢复检查。原语介绍cpu在切换进程需要将当前部分寄存器的值存储到PCB,恢复进程时读取PCB恢复寄存器的值这样就保持了进程上下文(运行环境)不变。进程控制原语的流程1.更新PCB信息2.将PCB插入合适队列3.分配/回收资源2.1.5_1 进程通信进程间通信(Inter-ProcessCommunicationIPC)是指两个进程之间产生数据交互。进程是分配系统资源的单位(包括内存地址空间)因此各进程拥有的内存地址空间相互独立。进程之间的通信包括共享存储消息传递管道通信。共享存储在操作系统中进程的共享存储Shared Memory是一种高效的进程间通信IPC, Inter-Process Communication机制它允许多个独立进程直接访问同一块物理内存区域从而无需通过内核中介或数据拷贝即可交换信息。这种机制的核心是绕过传统的进程隔离边界实现数据的直接共享。但是对于进程来说共享空间是互斥的不可以同时访问共享空间。共享存储的方式基于存储区的共享:操作系统在内存中划出一块共享存储区数据的形式、存放位置都由通信进程控制而不是操作系统。这种共享方式速度很快是一种高级通信方式。基于数据结构的共享:日比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢、限制多是一种低级通信方式消息传递进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。直接通信消息发送进程指明接收进程的ID;间接通信通过“信箱”间接的通信因此又称为“信箱通信方式“消息传递-直接通信方式直接通信方式的消息包含消息头和消息体消息发送进程指明接收进程的ID;消息传递-间接通信方式进程通信-管道通信“管道”是一个特殊的共享文件又名pipe文件。其实就是在内存中开辟一个大小固定的内存缓冲区信息流是队列的方式先进先出FIFO的方式.管道只能采用半双工通信某一时间段内只能实现单向的传输。如果要实现双向同时通信则需要设置两个管道。各进程要互斥地访问管道(由操作系统实现)当管道写满时写进程将阻塞直到读进程将管道中的数据取走即可唤醒写进程。当管道读空时读进程将阻塞直到写进程往管道中写入数据即可唤醒读进程。管道中的数据一旦被读出就彻底消失。因此当多个进程读同一个管道时可能会错乱。对此通常有两种解决方案:①一个管道允许多个写进程一个读进程(2014年408真题高教社官方答案);②允许有多个写进程多个读进程但系统会让各个读进程轮流从管道中读数据(Linux的方案)。总结写进程往管道写数据即便管道没被写满只要管道没空读进程就可以从管道读数据读进程从管道读数据自即便管道没被读空只要管道没满写进程就可以往管道写数据2.1.5_2 信号信号的作用信号用于通知某个特定的事件已经发生。进程接到信号后对该信号进行处理。信号分为待处理(pending)信号和被阻塞信号(blocked),阻塞信号会屏蔽pending信号具体表现为被阻塞的信号在产生时会进入未决Pending状态但不会递达给进程直到进程解除对该信号的阻塞信号才会递达并处理。处理信号时pending信号会与block信号按位与为1才处理。在PCB进程块里记录了位信号每一位对应一种信号处理当接收到信号时对应的位信号会置1当时如过上一个信号还没处理掉那么新来的相同位信号会被丢弃。PCB里记录的位信号只能记录接收到了哪一种信号无法确认是哪个进程发来的。进程之间运行发送的进程有限制。比如父进程可以对子进程发生9号进程(杀死进程信号)对子进程终止。而其他进程不可以。处理完进程后通常会返回到进程的下一条指令继续执行。什么时候处理信号当进程从内核态转为用户态如系统调用返回或中断处理返回例行检查是否有待处理信号如果有就处理信号。How 怎么处理信号?执行操作系统为此类信号设置的缺省(默认)信号处理程序某些信号默认忽略不作处理执行进程为此类信号设置用户自定义信号处理程序(自定义信号处理程序将覆盖①)信号处理程序运行结束后通常会返回进程的下一条指令继续执行(除非信号处理程序将进程阻塞或终止)一旦处理了某个信号就将pending位重置为0重复收到的同类信号将被简单地丢弃(因为仅有 1bit 记录一类待处理信号)当同时收到多个不同类信号时通常先处理序号更小的信号。进程自定义的中断程序只能改变自己的中断逻辑程序而不可以改变其他进程的中断信号处理逻辑。信号与异常的关系“信号”可以作为“异常”的配套机制,让进程对操作系统的异常处理进行补充。在进程运行过程中某些特殊事件可能引发,操作系统内核负责捕获并处理异常.有些异常可以由内核完成全部处理(如:页异常)此时就不必再使用信号机制。有些异常无法由内核完成全部处理需要用户进程配合此时就可以用“信号机制”与“异常机制“相互配合。总结2.1.6_1 线程的概念与特点有的进程可能需要“同时”做很多事而传统的进程只能串行地执行一系列程序。为此引入了“线程”来增加并发度。传统的进程是程序执行流的最小单位引入线程后线程成为了程序执行流的最小单位可以把线程理解为“轻量级进程”线程是一个基本的CPU执行单元也是程序执行流的最小单位。引入线程之后不仅是进程之间可以并发进程内的各线程之间也可以并发从而进一步提升了系统的并发度使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件).引入线程后进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)线程属性线程是处理机调度的单位多CPU计算机中各个线程可占用不同的CPU每个线程都有一个线程ID、线程控制块(TCE)线程也有就绪、阻塞、运行三种基本状态线程几乎不拥有系统资源同一进程的不同线程间共享进程的资源由于共享内存地址空间同一进程中的线程间通信甚至无需系统干预同一进程中的线程切换不会引起进程切换不同进程中的线程切换会引起进程切换切换同进程内的线程系统开销很小切换进程系统开销较大2.1.6_2 线程的实现方式和多进程模型线程实现方式-用户级线程早期操作系统不支持线程只有进程当时的”线程“由进程实现由程序员在一个进程里实现线程切换逻辑实际对于cpu来说只有一个进程这是用户级线程。很多编程语言实现了强大的线程库可以实现线程的创建、销毁、调度功能等。这是用户级的线程由用户程序来管理线程线程切换不需要用户态与内核态切换。优缺点优点用户级线程的切换在用户空间即可完成不需要切换到核心态线程管理的系统开销小效率高缺点:当一个用户级线程被阻塞后整个进程都会被阻塞并发度不高。多个线程不可在多核处理机上并行运行。线程实现方式-内核级线程内核级线程的管理由操作系统管理线程切换需要cpu的用户态和内核态转换操作系统可以意思到内核级线程的存在。内核级线程的管理工作由操作系统内核完成。线程调度、切换等工作都由内核负责因此内核级线程的切换必然需要在核心态下才能完成。操作系统会为每个内核级线程建立相应的TCB(Thread ControlBlock线程控制块)通过TCB对线程进行管理。“内核级线程”就是“从操作系统内核视角看能看到的线程优点:当一个线程被阻塞后别的线程还可以继续执行并发能力强。多线程可在多核处理机上并行执行。缺点:一个用户进程会占用多个内核级线程线程切换由操作系统内核完成需要切换到核心态因此线程管理的成本高开销大。多线程模型一对一模型一对一模型一个用户级线程映射到一个内核级线程。每个用户线程与用户线程同数量的内核级线程。优点:当一个线程被阻塞后别的线程还可以继续执行并发能力强。多线程可在多核处理机上并行执行。缺点:一个用户进程会占用多个内核级线程线程切换由操作系统内核完成需要切换到核心态因此线程管理的成本高开销大。多对一模型操作系统只能”看得见“内核级线程因此只有内核级线程才是处理机分配的单位这样多对一模型就退化到了原始的多用户级线程。多对一模型多个用户级线程映射到一个内核级线程。且一个进程只能被分配到一个内核基级线程。优点:用户级线程的切换在用户空间即可完成不需要切换到核心态线程管理的系统开销小效率高缺点:当一个用户级线程被阻塞后整个进程都会被阻塞并发度不高。多个线程不可在多核处理机上并行运行多对多模型多对多模型:n用户及线程映射到m个内核级线程(nm)。每个用户进程对应m个内核级线程。克服了多对一模型并发度不高的缺点(一个阻塞全体阻塞)又克服了一对一模型中一个用户进程占用太多内核级线程开销太大的缺点.可以这么理解:用户级线程是“代码逻辑”的载体,内核级线程是“运行机会”的载体内核级线程才是处理机分配的单位。例如:多核CPU环境下左边这个进程最多能被分配两个核。内核级线程中可以运行任意一个有映射关系的用户级线程代码如果进程有两个内核级线程只有两个内核级线程中正在运行的代码逻辑都阻塞时这个进程才会阻塞总结2.1.6_3 线程的状态与转换线程的转换和进程转化基本一致。线程控制块2.2.1调度的概念、层次当有一堆任务要处理但由于资源有限这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序这就是“调度”研究的问题。调度的三个层次–高级调度作业: 一个具体的任务用户向系统提交一个作业用户让操作系统启动一个程序(来处理一个具体的任务)高级调度(作业调度)。按一定的原则从外存的作业后备队列中挑选一个作业调入内存并创建进程。每个作业只调入一次调出一次。作业调入时会建立PCB调出时才撤销PCB。调度的三个层次–低级调度低级调度(进程调度/处理机调度)–按照某种策略从就绪队列中选取一个进程将处理机分配给它。进程调度是操作系统中最基本的一种调度在一般的操作系统中都必须配置进程调度。进程调度的频率很高一般几十毫秒一次。调度的三个层次–中级调度内存不够时可将某些进程的数据调外存。等内存空闲或者进程需要运行时再重新调入内存。暂时调到外存等待的进程状态为挂起状态。被挂起的进程PCB会被组织成挂起队列略决定将哪个处于挂起状态的进程重新调入内存。中级调度(内存调度)–按照某种一个进程可能会被多次调出、调入内因此中级调度发生的频率要比高级调度更高。进程的挂起状态和七状态模型暂时调到外存等待的进程状态为挂起状态(挂起态suspend)挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态五状态模型 —》七状态模型注意注意“挂起”和“阻塞”的区别两种状态都是暂时不能获得CPU的服务但挂起态是将进程映像调到外存去了而阻塞态下进程映像还在内存中。 有的操作系统会把就绪挂起、阻塞挂起分为两个挂起队列甚至会根据阻塞原因不同再把阻塞挂起进程进一步细分为多个队列。。三层调度的联系和对比总结注意高级调度-》作业调 中级调度-》内存调度 低级调度-》进程调度2.2.2_12.2.4 进程调度的时机、切换与过程调度的方式进程调度时机进程在操作系统内核程序临界区中不能进行调度与切换.(2012年联考真题)进程处于临界区时不能进行处理机调度,这个是错的。临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。临界区:访问临界资源的那段代码。内核程序临界区一般是用来访问某种内核数据结构的比如进程的就绪队列(由各就绪进程的PCB组成).进程调度的方式进程的切换与过程总结2.2.2_2 调度和闲逛进程闲逛进程、调度器如果就绪队列没有其他进程运行闲逛进程(idle),所以cpu永远不会空闲他会一直运行哪怕是空程序。2.2.3 调度的目标调度算法的评价指标cpu利用率利用率忙碌时间/总时间系统吞吐量周转时间响应时间总结2.2.5_1 调度算法先来先服务短作业优先高响应优先先来先服务(FCFS)短作业优先算法(SJF)注意一般来说都是非抢占式的SJF算法也有可能是抢占式的题目看清题目要求下面是抢占式对比非抢占式的短作业优先算法显然抢占式的这几个指标又要更低tips高响应比优先(HRRN)总结 (重要2.2.5_2调度算法时间片轮转RR)优先级调度多级反馈队列时间片轮转(RR)优先级调度算法非抢占式调度算法抢占式调度算法多级反馈队列调度算法高级队列新任务来了 → 会抢占低级的低级任务被打断后一般不会直接进下一级队列而是留在原队列或被放回队尾。总结2.2.5_3 调度算法多级队列调度算法2.2.6 多处理机调度多处理机就是多cpu调度每一个cpu都可以独立运行一个进程负载均衡、处理机亲和性方案一公共就绪队列私有就绪队列推迁移拉迁移私有就绪队列天然实现了处理机亲和性根据推迁移和拉迁移算法一定程度上实现了负载均衡总结2.3.1 同步和互斥基本概念同步的概念互斥的概念总结2.3.2_1 进程互斥的软件实现方法如果没有进程互斥单标志法双标志先检查法peterson算法让权等待的意思是在没有资源就立刻送出处理机而不是循环检查总结2.3.2_2 进程互斥的硬件实现方法中断屏蔽方法每个CPU核心通常都有自己独立的程序状态字寄存器PSW所以关中断只适用于单核而且只适用于系统内核进程TestAndSet指令Swap指令总结2.3.3 互斥锁2.3.4_1 信号量机制整型信号量记录型信号量总结2.3.4_2 用信号量机制实现进程互斥、同步、前驱关系信号量机制实现进程互斥信号量机制实现进程同步信号量机制实现前驱关系总结2.3.5_1_1 生产者-消费者问题下面导致死锁。总结2.3.5_1_2 多生产者-多消费者问题实现互斥的p操作一定要在实现同步的p操作之后否则会死锁。对于多容量的话没有互斥信号的话就可能导致二者同时进入临界区回顾

相关文章:

408计算机考研-计算机操作系统笔记-王道

计算机操作系统笔记-王道1.1.11.1.2操作系统的概念与功能操作系统的概念(定义)操作系统的功能和目标--向上提供方便易用的服务总结1.1.3 操作系统的特性并发与共享虚拟异步总结1.2_操作系统的发展和分类手工阶段批处理阶段--单道批处理系统多道批处理系统…...

InsightFace系统部署教程:从零开始搭建人脸分析Web界面

InsightFace系统部署教程:从零开始搭建人脸分析Web界面 1. 引言:为什么你需要一个本地化的人脸分析工具 想象一下,你手头有一批活动照片需要快速整理,想知道照片里每个人的大致年龄和性别分布,或者需要分析一段视频中…...

OpenClaw技能组合策略:千问3.5-35B-A3B-FP8驱动复杂工作流5个案例

OpenClaw技能组合策略:千问3.5-35B-A3B-FP8驱动复杂工作流5个案例 1. 为什么需要技能组合? 去年我尝试用单一技能处理竞品分析时,发现模型生成的报告总是缺少关键数据支撑。当我手动补充爬虫结果后,又面临图表生成与多语言翻译的…...

[特殊字符] 第72课:杨辉三角

想系统提升编程能力、查看更完整的学习路线,欢迎访问 AI Compass:https://github.com/tingaicompass/AI-Compass 仓库持续更新刷题题解、Python 基础和 AI 实战内容,适合想高效进阶的你。📖 第72课:杨辉三角模块:动态规划 | 难度:…...

S2-Pro辅助3D建模与场景描述:连接自然语言与Blender脚本生成

S2-Pro辅助3D建模与场景描述:连接自然语言与Blender脚本生成 1. 当3D建模遇上自然语言 想象一下这样的场景:你脑海中浮现出一个充满未来感的客厅设计,但打开Blender后却不知从何下手。传统3D建模需要掌握复杂软件操作和脚本编写&#xff0c…...

跨平台协同:Windows主机+Mac笔记本共享Qwen3-32B-Chat镜像方案

跨平台协同:Windows主机Mac笔记本共享Qwen3-32B-Chat镜像方案 1. 为什么需要跨平台共享大模型资源? 去年我入手了一台搭载RTX4090D显卡的Windows主机,专门用于本地部署大模型。但作为MacBook用户,日常开发都在笔记本上完成&…...

mac上安装openclaw从入门到删除

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录安装拉取最新版本拉取对应版本卸载1、卸载openclaw2、卸载openclaw CLI3、确认是否删除参考来源保姆级!Mac 安装小龙虾 OpenClaw 全教程OpenClaw 卸载教程…...

OpenClaw多任务调度:千问3.5-9B并行处理技巧

OpenClaw多任务调度:千问3.5-9B并行处理技巧 1. 为什么需要多任务调度 去年冬天,我接手了一个数据密集型项目,需要同时处理数据分析、邮件生成和文件格式转换三项任务。最初尝试用传统脚本串行执行,结果发现总耗时超过8小时——…...

Pixel Dream Workshop集成Dify应用流:构建AI绘画工作台实战

Pixel Dream Workshop集成Dify应用流:构建AI绘画工作台实战 1. 为什么需要AI绘画工作流自动化 电商公司每天需要生产数百张商品展示图,自媒体团队每周要创作几十套视觉内容,游戏工作室的角色设计需求源源不断。传统人工绘制方式不仅成本高、…...

本地跑 Gemma 4 替代 Claude Code?M4 Max 实测告诉你为什么行不通

文章目录引言:省钱的小算盘,打得震天响一、Gemma 4:Google 给本地玩家发的"甜蜜陷阱"二、Claude Code:云端的"灭霸级"存在三、M4 Max 实测:当理想照进现实,现实碎了3.1 第一坑&#xf…...

高光谱成像基础(十)基于 LMM 的端元提取灿

前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知,本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。 写在前面 Kafka 作为一个成熟的事件流平台,有非常多的配置参数。详细的参数列表可以…...

Pixel Script Temple 后端开发实战:快速生成RESTful API接口代码

Pixel Script Temple 后端开发实战:快速生成RESTful API接口代码 1. 为什么我们需要代码生成工具 作为一名后端开发者,你是否经常陷入这样的困境:每次新项目启动,都要重复编写相似的控制器、服务层和模型代码?或者当…...

gte-base-zh模型Java集成开发指南:SpringBoot构建语义搜索服务

gte-base-zh模型Java集成开发指南:SpringBoot构建语义搜索服务 你是不是也遇到过这样的问题?公司内部有海量的文档、产品说明或者用户反馈,想快速找到相关内容,用关键词搜索总是不准,要么搜不全,要么搜出一…...

Linux多线程条件变量:同步协同的高效实现

前言在Linux多线程编程中,线程间协同的核心需求是“按需等待、精准唤醒”,而“忙等待”会无谓消耗CPU资源,影响程序性能。Linux条件变量(pthread_cond_t)与互斥锁(pthread_mutex_t)配合&#xf…...

4.2-4.4

这期准备iic驱动上一期已经准备好了设备树&#xff0c;iic的驱动代码分为 I2C 适配器驱动和 I2C 设备驱动&#xff0c;一般iic适配器驱动由soc厂商去写iic设备树追加&#xff1a;1 &i2c4 { 2 status "okay"; 3 pinctrl-0 <&i2c4m1_xfer…...

AI IDE 开发(公司只能用codeArts)

1&#xff0c;概述 AI现在这么火&#xff0c;我想着用AI开发一个后台管理系统试试。看看整个AI IDE开发的流程&#xff0c;文档检查&#xff0c;文档执行等。 背景&#xff1a;我是一个开发了5年经验的 web前端开发 程序员。不会后端&#xff0c;只了解基础的一些业务、数据库…...

Java 并发原子类完全指南:Atomic 全家桶、CAS/JMM、ABA、LongAdder、源码阅读路线与经典实战

多线程编程中&#xff0c;count 这样简单的操作都不是线程安全的。用 synchronized 能解决问题&#xff0c;但锁会带来阻塞和上下文切换开销。java.util.concurrent.atomic 包提供了一套基于 CAS&#xff08;Compare-And-Swap&#xff09;的无锁并发工具&#xff0c;在“单变量…...

手把手教你用Python和MATLAB生成标准SVS文件(从numpy数组到多级金字塔)

从Numpy数组到多级金字塔&#xff1a;Python与MATLAB生成SVS文件的实战指南 在数字病理领域&#xff0c;全切片图像(WSI)的生成与共享已成为研究协作的关键环节。许多研究者面临一个共同挑战&#xff1a;如何将处理后的numpy数组&#xff08;如分割结果或合成图像&#xff09;转…...

Phi-4-reasoning-vision-15B在研发协作中的应用:代码IDE截图理解与问题定位

Phi-4-reasoning-vision-15B在研发协作中的应用&#xff1a;代码IDE截图理解与问题定位 1. 引言&#xff1a;研发协作中的视觉理解需求 在软件开发团队中&#xff0c;工程师们每天都要处理大量代码截图和IDE界面。当遇到问题时&#xff0c;最常见的做法是把报错截图或代码片段…...

逆变器核心技术解析:锁相环(PLL)在并网系统中的应用与优化

1. 锁相环(PLL)在并网逆变器中的核心作用 想象一下你正在参加一场合唱比赛&#xff0c;如果每个人的节奏都不一致&#xff0c;整个表演就会变得杂乱无章。并网逆变器面临的也是类似的问题——它需要与电网保持完美的"节奏同步"&#xff0c;而这个"指挥家"就…...

Z-Image-Turbo-辉夜巫女实战教程:GPU算力弹性伸缩——按需加载LoRA模型

Z-Image-Turbo-辉夜巫女实战教程&#xff1a;GPU算力弹性伸缩——按需加载LoRA模型 1. 快速了解Z-Image-Turbo-辉夜巫女 Z-Image-Turbo-辉夜巫女是基于Z-Image-Turbo模型的LoRA版本&#xff0c;专门优化用于生成辉夜巫女风格图片的AI模型。这个模型通过Xinference框架部署&am…...

Beautiful Soup

什么是Beautiful Soup 官网推荐现在的项目使用BeautifulSoup4 &#xff08;BeautifulSoup 4版本&#xff0c;简称为bs4&#xff09;开发。bs4是一个HTML/XML的解析器&#xff0c;主要的功能是解析和提取HTML/XML数据。 bs4不仅支持CSS选择器&#xff0c;而且支持Python标准库…...

Intv_AI_MK11与Claude协同实战:构建多模型AI应用开发平台

Intv_AI_MK11与Claude协同实战&#xff1a;构建多模型AI应用开发平台 1. 混合AI模型的应用价值 在AI应用开发领域&#xff0c;单一模型往往难以满足复杂业务需求。就像一支足球队需要不同位置的球员配合一样&#xff0c;将Intv_AI_MK11与Claude等模型协同部署&#xff0c;能够…...

Qwen3.5-9B-AWQ-4bit Proteus电路仿真辅助:原理图分析与代码生成

Qwen3.5-9B-AWQ-4bit Proteus电路仿真辅助&#xff1a;原理图分析与代码生成 1. 电子工程师的新助手 作为一名电子工程师&#xff0c;你是否经常遇到这样的场景&#xff1a;面对复杂的电路原理图&#xff0c;需要花费大量时间分析各个模块的功能&#xff1b;或者在Proteus中设…...

Git-RSCLIP多场景落地:生态环境监测中‘红树林退化’语义识别案例

Git-RSCLIP多场景落地&#xff1a;生态环境监测中"红树林退化"语义识别案例 1. 项目背景与需求 红树林作为重要的海岸带生态系统&#xff0c;具有防风消浪、净化水质、维持生物多样性等重要生态功能。然而近年来&#xff0c;由于人类活动和环境变化&#xff0c;全球…...

Qwen-Image-Edit-2511在云端:集成显卡/Mac也能流畅运行的AI修图方案

Qwen-Image-Edit-2511在云端&#xff1a;集成显卡/Mac也能流畅运行的AI修图方案 1. 为什么选择云端部署Qwen-Image-Edit-2511&#xff1f; 1.1 硬件限制的突破性解决方案 传统AI图像编辑工具对硬件的高要求一直是普通用户的痛点。Qwen-Image-Edit-2511作为最新一代多模态编辑…...

基于Matlab实现 IEEE33节点配电网系统simulink仿真模型,并配套前推回代法潮流计算程序

基于Matlab实现 IEEE33节点配电网系统simulink仿真模型&#xff0c;并配套前推回代法潮流计算程序。 改进的IEEE33节点&#xff0c;潮流计算&#xff0c;电压分析&#xff0c;可自行加风机光伏&#xff0c;接电动机负载。 结果图如图所展示&#xff0c;附带IEEE33节点数据MATLA…...

M2LOrder模型赋能软件测试:用例生成与缺陷预测实践

M2LOrder模型赋能软件测试&#xff1a;用例生成与缺陷预测实践 最近和几个做测试的朋友聊天&#xff0c;大家普遍吐槽&#xff0c;现在软件迭代越来越快&#xff0c;留给测试的时间却越来越短。需求文档刚定稿&#xff0c;开发那边代码就快写完了&#xff0c;测试用例还没设计…...

从直觉到算法:贝叶斯思维的技术底层与工程实现督

背景 在软件开发的漫长旅途中&#xff0c;"构建"这个词往往让人又爱又恨。爱的是&#xff0c;一键点击&#xff0c;代码变成产品&#xff0c;那是程序员最迷人的时刻&#xff1b;恨的是&#xff0c;维护那一堆乱糟糟的构建脚本&#xff0c;简直是噩梦。 在很多项目中…...

算术运算符(i++与++i)

i与i在独立使用时结果一致&#xff1b;作为表达式使用时&#xff1a;j 8&#xff08;1&#xff09;k j 等于 j j1&#xff0c;再k j 。先自增&#xff0c;再赋值 &#xff0c;j9&#xff0c;k9&#xff08;2&#xff09; k j 等于 k j&#xff0c;再j j1 。先赋值&#…...