操作系统初学
文章平均质量分 89
初学操作系统知识点整合,参考教学视频哔哩哔哩王道考研19年上传。
孤傲倾城
努力学习编程的本科大学生
展开
-
(二十五)操作系统--读者·写者问题
读者-写者问题为我们解决复杂的互斥问题提供了一个参考思路。其核心思想在于设置了一个计数器count用来记录当前正在访问共享文件的读进程数。我们可以用count的值来判断当前进入的进程是否是第一个/最后一个读进程,从而做出不同的处理。另外,对 count变量的检查和赋值个能一气呵成导致了一些错误,如果需要实现“一气呵成”,自然应该想到用互斥信号量。有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能原创 2023-03-10 11:49:40 · 1420 阅读 · 0 评论 -
(二十四)操作系统-吸烟者问题
吸烟者问题可以为我们解决“可以生产多个产品的单生产者”问题提供一个思路。值得吸取的精华是:“轮流让各个吸烟者吸烟”必然需要“轮流的在桌上放上组合一、二、三”,注意体会我们是如何用一个整型变量i 实现这个“轮流”过程的。若一个生产者要生产多种产品(或者说会引发多种前驱事件),那么各个V操作应该放在各自对应的“事件”发生之后的位置。假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它,但是要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草、纸和胶水。三个抽烟者中,第一个拥有烟草、第二个拥有纸、原创 2023-03-08 23:05:13 · 566 阅读 · 0 评论 -
(二十三)操作系统-多生产者·多消费者问题
解决“多生产者-多消费者问题”的关键在于理清复杂的同步关系。在分析同步问题(一前一后问题)的时候不能从单个进程行为的角度来分析,要把“一前一后”发生的事看做是两种“事件”的前后关系。比如,如果从单个进程行为的角度来考虑的话,我们会有以下结论:如果盘子里装有苹果,那么一定要女儿取走苹果后父亲或母亲才能再放入水果。如果盘子里装有橘子,那么一定要儿子取走橘子后父亲或母亲才能再放入水果。正确的分析方法应该从“事件”的角度来考虑,我们可以把上述四对“进程行为的前后关系”抽象为一对“事件的前后关系”。原创 2023-03-07 15:48:08 · 515 阅读 · 0 评论 -
(二十二)操作系统-生产者·消费者问题
消费者进程执行③,由于mutex为0,即生产者还没释放对临界资源的“锁”,因此消费者也被阻塞。系统中有一组生产者进程和一组消费者进程,生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用。有时候是消费者需要等待生产者生产,有时候是生产者要等待消费者消费,这是两个不同的“一前一后问题”,因此也需要设置两个同步信号量。这就造成了生产者等待消费者释放空闲缓冲区,而消费者又等待生产者释放临界区的情况,生产者和消费者循环等待被对方唤醒,出现“时,生产者才能把产品放入缓冲区,否则必须等待。原创 2023-03-02 08:00:00 · 832 阅读 · 0 评论 -
(二十一)操作系统-信号量机制2
信号量机制实现进程互斥,分析并发进程的关键活动,划定临界区(如:对临界资源打印机的访问就应放在临界区).设置互斥信号量mutex,初值为1。在临界区之前执行P(mutex),在临界区之后执行V(mutex)。P、V操作必须成对出现。缺少P(mutex)就不能保证临界资源的互斥访问。缺少V(mutex)会导致资源永不被释放,等待进程永不被唤醒。信号量机制实现进程同步。设置同步信号量s,初始为0。在“前操作”之后执行v(S)。在“后操作”之前执行P(S)。信号量机制实现前驱关系。进程P1中有句代码S1,P2中有原创 2023-03-01 10:30:00 · 225 阅读 · 0 评论 -
(二十)操作系统-信号量机制
信号量就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量,比如:系统中只有一台打印机,就可以设置一个初值为1的信号量。整形信号量:用一个整数型的变量作为信号量,用来表示系统中某种资源的数量。与普通整数变量的区别在于,对信号量的操作只有三种:初始化、P操作、V操作。记录型信号量:用记录型整数结构表示的信号量。 block原语:如果剩余资源数不够,使用block原语使进程从运行态进入阻塞态,并把挂到信号量S的等待队列(即阻塞队列)中、wakeup原语:释放资源原创 2023-02-28 17:19:39 · 723 阅读 · 0 评论 -
(十九)操作系统-进程互斥的硬件实现
利用“开/关中断指令”实现(与原语的实现思想相同,即在某进程开始访问临界区到结束访问为止都不允许被中断,也就不能发生进程切换,因此也不可能发生两个同时访问临界区的情况)关中断后即不允许当前进程被中断,也必然不会发生进程切换。直到当前进程访问完临界区,再执行开中断指令,才有可能有别的进程上处理机并访问临界区。优点:简单、高效缺点:不适用于多处理机;只适用于操作系统内核进程,不适用于用户进程(因为开/关中断指令只能运行在内核态,这组指令如果能让用户随意使用会很危险)简称TS指令原创 2023-02-27 17:30:00 · 302 阅读 · 0 评论 -
(十八)操作系统-进程互斥的软件实现方法
算法思想:两个进程在访问临界区后,会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予。turn的初值为0,即刚开始只允许0号进程进入临界区。若p1先上处理机运行,则会一直卡在⑤。直到p1的时间片用完,发生调度,切换p0上处理机运行。代码①不会卡住p0,p0可以正常访问临界区,在p0访问临界区期间及时切换回p1,p1依然会卡在⑤。只有p0在退出区将turn改为1后,p1才能进入临界区。因此,该算法可以实现“同一时刻最多只允许一个进程访问临原创 2023-02-26 16:45:00 · 544 阅读 · 0 评论 -
(十七)操作系统-进程同步、互斥
同步亦称直接制约关系,他是指为完成某种任务而建立的两个或多个进程。这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。对临界资源的访问,必须互斥地进行。互斥,亦称间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。进入区:负责检查是否可以进入临界区,若可进入,则应设置正在访问临界资源的标志(可理解为“上锁”),以阻止其他进程同时进入原创 2023-02-25 16:43:25 · 283 阅读 · 0 评论 -
(十六)操作系统-交互式系统调度算法
时间片轮转调度算法:轮流让就需队列中的进程一次执行一个时间片(每次选择的都是排在就绪队列队头的进程)。常用于分时操作系统,更注重“响应时间”。非抢占式的优先级调度算法:每次调度时选择当前已到达且优先级最高的进程。当前进程主动放弃处理机时发生调度。抢占式的优先级调度算法:每次调度时选择当前已到达且优先级最高的进程。当前进程主动放弃处理机时发生调度。另外,当就绪队列发生改变时也需要检查是否会发生抢占。多级反馈列队调度算法:设置多级就绪队列,各级队列优先级从高到低,时间片从小到大。新进程到达时先进入第1级队列,按原创 2023-02-24 17:15:00 · 523 阅读 · 0 评论 -
(十五)操作系统-调度算法
高响应比优先算法:非抢占式的调度算法,只有当前运行的进程主动放弃CPU时(正常/异常完成,或主动阻塞),才需要进行调度,调度时计算所有就绪进程的响应比,选响应比最高的进程上处理机。短作业/短进程优先调度算法:每次调度时选择当前已经到达且运行时间最短的作业/进程。先来先服务算法:按照到达的先后顺序调度,事实上就是等待时间越久的越先优先得到服务。FCFS算法是在每次调度的时候选择一个等待时间最长的作业(进程)为其服务。但是没有考虑到作业的运行时间,因此导致了对短作业不友好的问题。SJF算法是选择一个执行时间最短原创 2023-02-23 09:15:00 · 231 阅读 · 0 评论 -
(十四)操作系统-调度算法的评价指标
指CPU“忙碌”的时间占总时间的比例。由于早期的CPU价格机器昂贵,因此人们希望让CPU尽可能的多工作。某计算机只支持单道程序,某个作业刚开始需要在CPU上运行5秒,再用打印机打印输出5秒,之后再执行5秒,才能结束。在此过程中,CPU利用率、打印机利用率分别是多少?系统吞吐量:单位时间内完成作业的数量。对于计算机来说,希望能用尽可能少的时间处理完尽可能多的作业。指从作业被提交给系统开始,到作业完成为止的这段时间。响应时间,指从用户提交请求到首次产生响应所用的时间。对于计算机用户来说,会希望自己的提交的请求(原创 2023-02-22 12:10:05 · 304 阅读 · 0 评论 -
(十三)操作系统-进程调度
就是按照某种算法从就绪队列中选择一个进程为其分配处理机。 一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。 访问临界资源的那段代码。 一般是用来访问某种内核数据结构的,比如进程的就绪队列(由个就绪进程的PCB组成) 当一个进程此时处于内核程序临界区,并且这个临界区要访问就绪队列,在访问前会将就绪队列上锁。如果还没退出内核程序临界区(就绪队列的资源未解锁)就进行进程调度,进程调度相关程序需要访问就绪队列,但此时就绪队列是锁住状态,因此无法顺利进行进程调度。 所以内核程序临原创 2023-02-22 11:13:30 · 203 阅读 · 0 评论 -
(一)操作系统-基础概念
操作系统是控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。负责管理协调硬件、软件等计算机资源的工作。为上层的应用程序、用户提供简单易用的服务。操作系统是系统软件,而不是硬件。没有任何软件支持的计算机称为裸机。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。通常把覆盖了软件的机器称为扩充机器,又称为虚拟机。GUI图形用户界面(Graphical原创 2023-02-16 22:32:23 · 314 阅读 · 0 评论 -
(二)操作系统-四个特质
并发指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。易混淆概念:并行,指两个或多个事件在同一时刻同时发生。操作系统的并发性指计算机系统同时存在着多个运行着的程序。操作系统和程序并发是一起诞生的。共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底原创 2023-02-17 11:02:53 · 172 阅读 · 0 评论 -
(三)操作系统-发展与分类
计算机刚被发明的时候使用的一种方式,这个阶段没有操作系统。step1:程序员写程序时,需要在纸带上用打孔机打孔,打孔的代表二进制的1,没打孔的地方代表二进制的0。step2:后将纸带装到纸带机上,纸带机会读取纸带中的数据,将数据输入到计算机当中。step3:计算机处理完数据,会把数据从内存通过CPU输出到纸带机。step4:用户在从纸带机上取走输出的纸带。输出的纸带就是用户的程序执行的结果。引入脱机输入/输出技术(用磁带完成),并监督程序负责控制作业的输入、输出。原创 2023-02-17 12:25:37 · 118 阅读 · 0 评论 -
(四)操作系统-运行机制和体系结构
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序。特权指令只能在核心态下执行。内核程序只能在核心态下执行。指令:及时处理器(CPU)能识别、执行的最基本命令。(如:加法指令就是让CPU进行加法运算)用户态(目态):此时CPU只能执行非特权指令。核心态(管态):特权指令、非特权指令都可执行。用程序状态字寄存器(PSW)中的某标识位来表示当前处理器处于什么状态。如0为用户态,1为核心态。内核程序:操作系统的内核程序是系统的管理者。既可以执行特权指令,也可原创 2023-02-17 13:35:47 · 413 阅读 · 0 评论 -
(五)操作系统-中断和异常
为了解决系统利用率低的问题,发明了操作系统(作为计算机的管理者),引入中断机制,实现了多道程序并发执行。发生中断就意味着需要操作系统的介入,开展管理工作。step1:多道程序同时放入内存中,各个程序并发进行。step2:进程1在用户态下运行一段时间后,CPU收到计时部件发出的中断信号,切换为核心态对中断进行处理,将CPU的使用权限交给操作系统。step3:操作系统的内核负责对中断信号进行处理。step4:进程1的时间片已用完,换进程2运行。step5:一系列管理工作完成后,操作系统会把CP。信号的来源:CP原创 2023-02-17 15:32:39 · 307 阅读 · 0 评论 -
(六)操作系统-系统调用
系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。操作系统提供“系统调用”功能,用户进程想要使用共享资源,只能通过系统调用向操作系统发出请求。操作系统会对各个请求进行协调管理。综上所述:应用程序通过系统调用请求操作系统的服务。凡是与资源有关的操作,会直接影响到其他进程的操作,一定需要操作系统介入,即需要通过系统调用来实现。系统调用发生在用户态,对系统调用的处理发生在核心态。执行陷入指令会产生内中断,使处原创 2023-02-17 19:28:18 · 258 阅读 · 0 评论 -
(七)操作系统-进程的基本概念
程序:就是一个指令序列。单道程序:程序的代码放在程序段内,程序运行过程处理的数据放在数据段内(如变量)多道程序:内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。为了方便操作系统管理,完成各程序并发执行,引入了进程进程实体的概念。系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)。进程是程序的一次执行过程。进程是一个程序及其数据在处理机上顺序执行时所发生的活动。进程是具有独立功能的程序在数据集合上运行的过程。原创 2023-02-18 00:06:00 · 155 阅读 · 0 评论 -
(八)操作系统-进程的状态与转换
进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时有需要等待CPU服务,可见,进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理的划分为几种状态。占有CPU,并在CPU上运行。单核处理机环境下,每一时刻最多只有一个进程处于运行态。双核环境下可以同时有两个进程处于运行态。已经具备运行条件,但由于没有空闲CPU,而暂时不能运行。进程已经拥有除处理机之外所有需要的资源,一旦获得处理机,即可立即进入运行态开始运行。即:万事俱备,只欠东风。又称等待态。原创 2023-02-18 12:05:48 · 774 阅读 · 1 评论 -
(九)操作系统-进程控制
进程控制的主要功能是对系统中所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。简单理解,进程控制就是实现进程状态转换。切换原语将运行态进程转换为阻塞态/就绪态进程;就绪态进程转换为运行态进程。唤醒原语将阻塞态进程转换为就绪态。阻塞原语将运行态进程转换为阻塞态。撤销原语将就绪态/阻塞态/运行态的进程转换为终止态,再转换为无状态。创建原语将进程无状态转换为创建态,再转换为就绪态。关/开中断指令的权限非常大,必然是只允许在核心态下执行的特权指令。即原语运行在核心态。用原语实现进程控制原创 2023-02-18 13:39:36 · 287 阅读 · 0 评论 -
(十)操作系统-进程通信
进程通信就是指进程之间的信息交换。进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法。两个进程不能直接访问对方的地址空间,所有操作系统会为两个进程分配一个共享空间。两个进程间的通信就可以通过共享空间来进行完成。两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)。当进程一在往共享空数据一旦被读出,就从管道中被抛弃原创 2023-02-19 23:52:17 · 421 阅读 · 0 评论 -
(十一)操作系统-线程概念和多线程模型
进程是程序的一次执行。但这些功能显然不可能是由一个程序顺序处理就能实现的。有的进程可能需要“同时”做很多事,而传统的进程只能串行地执行一系列程序。为此,引入了“线程”,来增加并发度。传统的进程是程序执行流的最小单位。引入线程后,线程成为了程序执行流的最小单位。我们可以把线程理解为“轻量级进程”。线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度。原创 2023-02-20 19:11:45 · 138 阅读 · 0 评论 -
(十二)操作系统-处理机调度的概念、层次
当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。在多道程序系统中,进程的数量往往是多于处理机的个数的,这样不可能同时并行地处理各个进程。处理机调度,就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程的并发执行。由于内存空间有限,有时无法将用户提交的作业全部放入内存,因此就需要确定某种规则来决定将作业调入内存的顺序。高级调度(作业调度):按一定原则从外存上处于后备队列的作业中原创 2023-02-21 20:56:27 · 133 阅读 · 0 评论