《现代操作系统》学习笔记
《现代操作系统》看了两个多月才看了前面200页,很多都似懂非懂,权且将自己认为重要的概念抄下来,以备后续查看。
0. 概述(1)操作系统的概念对操作系统的定义,有两种说法,一种声称操作系统是计算机的扩展器,一种声称操作系统是计算机资源集的抽象。
所谓操作系统是计算机的扩展,是将操作系统当做计算机对外的接口。
对外包括对应用程序,对程序员,对用户。
操作系统对计算机进行“化妆”,将计算机“丑陋晦涩”的硬件对外隐藏,而向外呈现界面友好清晰,更易理解的操作系统。
如下图所示:所谓操作系统是计算机资源集的抽象,是指操作系统将计算机资源(处理器,存储器以及I/O设备等)进行抽象以及管理。
将CPU处理抽象为进程,将内存抽象为地址空间,磁盘抽象成文件。
而这一切抽象都是为了实现多道程序设计,即可以在一个计算机上同时运行多个互不干扰程序。
(2)操作系统的作用操作系统的主要任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O接口设备的分配。
其主要任务包括管理资源分配,评估使用代价和调节资源分配的冲突,记录哪个程序在用什么资源,用多少,用多久。
资源管理包括用以下两种不同方式实现多路复用:在时间上复用(进程调度:CPU 时间片轮转)和在空间上复用(内存管理:虚拟内存,页面置换;磁盘管理:文件系统)。
在时间上分配CPU资源需要考虑该进程在上面运行多久,下一次切换到哪一个进程。
在空间上分配存储空间需要考虑给每个进程分配多少内存,如果内存不足的时候,将哪个页面置换到磁盘以腾出空间。
操作系统的主要功能:为用户程序提供抽象和管理计算机资源。
用户程序和操作系统之间的交互处理是前者。
用户程序和操作系统之间的交互主要是处理抽象。
对于管理计算机资源系统(进程调度,内存置换等)一般自动完成。
所以主要是用户程序与操作系统的交互。
用户程序通过操作系统提供的接口来访问底层的系统。
操作系统提供一种特殊的过程调用——系统调用,该种过程调用可以由用户态陷入内核态对底层进行操作。
比如可以创建和退出进程,打开和读写文件等。
目前主要由以下几种系统调用函数——进程管理,文件管理,目录和文件系统管理以及其他。
常用的系统调用可以参见下表:(3)为什么要了解操作系统之前跟同事说我没有修过操作系统,想补补操作系统,同事说操作系统工作中很少用,我当时想学习操作系统也跟我学习数据结构后一个感觉——很难很有趣但是工作中用不着。
而老大却一再跟我说,让我打好基础,好好补补操作系统,计算机网络等基础课程。
而我自己看了操作系统之后,突然恍然大悟,oh,原来学习数据结构就是为了学习操作系统呀呀呀~~(*^__^*) 嘻嘻……瞎扯完,言归正传。
我当时学习操作系统源于工作中遇到一个父子进程共享文件描述符的坑。
这个坑坑得我好惨啊,因为其具有偶发性,而且完全没有日志迹象查询,只知道在入口处数据就莫名其妙丢了。
之前同事也遇到过这种情况,只是定位怀疑有一段代码存在问题,总是觉得那段fork子进程的代码有问题,后来因为这个bug复现少,所以也不了了之。
后来因为系统用得越来越多,这个问题复现概率大大提高,于是开始打日志,每一个操作都打日志,最后在老大的英明神武下,发现了原来是在fork子进程之前没有关闭父进程使用的队列连接。
如果没有老大,估计打死我也不知道如何解决这个问题。
因为我完全不知道这个基础知识。
虽然后来老大跟我说了父子进程共享文件描述符的知识,也说了数据可能被子进程的队列连接socket的handle读走了。
但是我还是似懂非懂,于是乎,我决定好好补补操作系统。
除了因为这个坑,还因为每次老大跟我说内存,cpu,进程,线程我都没概念,所以我决定脑补下,^_^。
吐槽完总结下,了解操作系统就是为了理解计算机是如何工作的,以及程序如何运行的,从而优化程序更好地实现需求,达到预期目的。
(a)程序在运行的时候需要哪些资源,会受到哪些资源(如磁盘,内存,cpu等)限制。
比如日常程序每天导库的时候需要例行将历史记录清除,以防磁盘空间不足。
比如redis中的缓存过期数据也要定时清除,以防止redis内存不足而导致其他redis操作失败。
在设置redis的max_memory的时候,也要考虑随着业务增长,对redis内存空间要求会越来越大。
比如写程序的时候也要考虑程序可能要用到的最大内存,如果使用内存超过系统默认分配内存,将导致程序出错退出。
比如使用sort命令或awk联合数组对大文件排序的时候可能导致内存使用率100%。
比如使用fork子进程的,要考虑cpu的限制,不能fork很多子进程,最好使用taskset设置空出一两个核以使机器负载不至于过高,还有fork子进程要记得exit,否则资源不释放,会导致cpu飙到100%。
比如访问同一个资源(db或者redis)的时候要考虑qps,否则会使得资源cpu使用率过高,从而使得有些资源操作失败。
影响业务qps主要是用户的访问频率,除此之外在异步处理(用队列存储数据,用daemon处理数据)中,daemon数,队列数都会影响qps。
(b)分析系统的资源评价,从而使得系统优化。
考虑程序运行慢是受哪一部分的限制:CPU,内存,磁盘等。
耗费这些资源过多的是磁盘IO还是网络IO。
比如考虑优化网络IO,使用pipeline将数据push到队列,比一个个push要快很多,使用hashMSet比hashSet要快,比如redis的qps过高,会引起cpu占用太高,从而引起程序太慢。
(c)为防止各个程序同时访问一个资源而引起冲突,会引进互斥的概念。
比如多个任务并行处理,如何分配唯一任务id。
或许有人说采用时间戳,可是当系统并行处理多个任务的时候,他们处理时差远少于1秒,1秒的间隔已经无法区分他们的时序。
有人可能说采用一个共享变量,每次自增来分配task_id。
但是如何保证并行处理的时候这个共享task_id唯一,不会出现冲突,这就要理解互斥。
在工作之前没有任何什么锁住表,锁住redis,互斥的概念,这些对我来说都是天书。
所以当工作遇到redis为了实现互斥,采用单线程。
并且redis在执行一个操作的时候,会锁住redis。
于是问题来了,当redis删除大数据(如6kw+长度的hash列表或者大的set,长的list)的时候,redis会被锁住很久(高达十几秒),此时对该redis的其他操作就无法执行。
在工作中也遇到这个坑,很多泪就不飙了...除了这个坑,当多个程序同时访问同一个redis的时候,发生了冲突,即竞争条件,从而使得redis操作失败,并且使得下面的程序无法执行。
这个时候可以考虑模拟假脱机打印机处理打印机资源冲突的方式。
将对redis操作请求入队列,单独使用一个daemon来消耗队列中redis操作请求一一处理之。
采用队列的方式,可以使得各redis的操作请求具有一定的时序。
(d)采用多进程,以及父子进程共享文件描述符,多线程共享地址空间都是为了充分利用系统资源,并行处理以更快速度解决问题。
并行就必须考虑各个进程之间是否保有独立性,各个同时处理的数据是否具有依赖性,若有依赖性就牵涉时序问题,资源共享也往往引起冲突。
可能你的程序看起来很符合逻辑,但是在处理大文件和大量数据的时候,还符合逻辑吗?在多个相关任务并行处理的时候,还符合逻辑吗?在机器出现资源不足的时候,还符合逻辑吗?在多个程序竞争资源的时候,还符合逻辑吗?在需求变更的时候,还符合逻辑吗?要解答这些问题,就是你要学习操作系统的原因。
要理解操作系统,就必须要理解每一个资源抽象的概念和实现,以及如何使用这些抽象来解决问题。
所以下面会从cpu的抽象——进程(进程调度),内存的抽象——地址空间(内存管理),磁盘的抽象——文件(文件系统),互斥和锁这几个方面来记录学习操作系统的一些笔记和感受。
1. cpu --> 进程(1)进程的概念就像人类对这个世界的认识一样,首先是感性认识,之后才上升到理性认识。
所以我们首先通过《现代操作系统》上对进程的一段比喻来理解进程。
想象一位有一手好厨艺的计算机科学家正在为他的女儿烘制生日蛋糕。
他有做生日蛋糕的食谱,厨房里有所需要的原料:面粉、鸡蛋、糖和香草汁等。
在这个过程中:做蛋糕的食就是程序。
计算机科学家就是处理器cpu。
做蛋糕的各种原料就是输入数据。
科学家阅读食谱、取来各种原料按照食谱的步骤烘培蛋糕的一系列动作的总和就是进程。
进程切换的比喻:现在科学家的儿子哭着跑进来,说他的头被蜜蜂蛰了,科学家记录下其食谱做到哪儿了(保存进程的当前状态),然后拿出一本急救手册,按照其中的只是处理蛰伤。
这里,我们看到处理机(科学家)从一个进程(做蛋糕)切换到一个更高优先级的进程(实施医疗救治),每个进程拥有各自的程序(食谱和急救手册)。
蜜蜂蛰伤处理完成之后,这位计算机科学家又回来做蛋糕,从他离开时的那一步继续往下做。
所谓进程,就是容许运行一个程序所需要所有信息的容器。
这些信息包括与进程相关的有地址空间和资源集。
地址空间包括可执行程序,程序的数据以及程序的堆栈;资源集包括寄存器,打开文件清单,突出的报警,有关进程清单,以及运行该进程所需要的所有其他信息。
知道进程的概念,就知道系统会给每个进程分配一个PID,通过这个PID可以查看各个进程使用cpu,内存,code资源情况,同时可以将PID传给kill命令杀死这个进程。
非常赞同在比较unix和windows的,windows隐藏了太多操作系统的细节,而unix的命令行界面可以更多程序操作系统的相关细节。
所以可以使用top命令查看当前系统运行了哪些进程,每个进程占用多少CPU和进程,磁盘,机器负载是否过高等。
虽然windows资源管理器一定程度也可以,但是还是没有unix的直观和详细。
我想对有经验程序员来说,windows 简直弱爆了,费时而且不方便。
虽然我还是一个菜鸟级程序员,也还一直使用着windows,也无法抛弃windows,但还是被unix深深滴吸引。
(2)进程模型——进程如何实现的(如何创建和终止进程,进程的层次,进程的状态,进程表)创建一个进程,其实是启动一个程序。
一般在以下四种情况下创建进程:1). 系统初始化(比如启动计算机)2). 执行了正在运行的进程所调用的进程创建系统调用(fork)3). 用户请求创建一个进程(比如用户打开一个程序)4). 一个批处理作业的初始化进程也是有生命周期的,当它完成它的任务之后,就要释放计算机的相关资源并退出。
一般通过以下条件来终止进程。
1). 正常退出;2). 出错退出;(异常处理)3). 严重错误;(非法指令,引用错误内存,除零错误)4). 被杀死从上面创建进程的第二种方法可以看到进程可以fork进程,则说明进程存在父子关系,有其层次结构。
父进程和子进程共享文件描述符(file_handle,网络连接socket)和相同的存储映像,相同的环境字符串。
现代操作系统读书笔记2
现代操作系统读书笔记 22022-08-03 发表于北京第一章抽象是管理复杂性的一个关键。
1 计算及主要部件多数计算机有两种运行模式:内核态和用户态。
内核态:操作系统具有对所有硬件的完全访问权限,可以执行机器能够运行的任何指令。
在用户态下,只使用了机器指令中的一个子集。
用户接口程序:允许用户运行其他程序,诸如:音乐播放器等操作系统处于硬件之上,为所有其他软件提供基础的运行环境。
在内核态中运行的必然是操作系统的一部分,但一些内核外运行的程序也有争议的被认为是操作系统的一部分,或者至少与操作系统密切相关。
资源管理包括两种不同方式的复用:时间上复用和空间上复用。
时间复用:不同程序或用户轮流使用它。
空间复用:每个客户得到资源的一部分,取代客户排队。
PSW 中有一个二进制位控制着用户态和内核态两种模式,。
GPU 是指由成千上万个微核组成的处理器,他们擅长处理大量并行的简单计算。
他们不太能胜任串行任务,并且很难编程。
•存储器顶层是在cpu中的寄存器,与 cpu 的材料相同,和cpu一样快。
下一层是高速缓存。
高速缓存命中就不需要通过总线发送请求到主存2 上下文切换在多道程序系统中,从一个程序切换到另一个程序,有时称为上下文切换,有必要对来自缓存的所有修改过的块进行写回磁盘操作,并修改MMU中的映像寄存器。
3 进程:本质上是正在执行的一个程序。
与每个进程相关的是地址空间,这是某个最小值的存储位置到最大值的存储位置的列表。
该地址空间中存放有可执行程序、程序的数据、以及程序堆栈。
与进程相关的还有资源集,通常包括寄存器、打开文件清单、有关进程清单,以及运行该程序所需要的所有其他程序。
在许多操作系统中,与一个进程相关的所有信息,除了该进程自身地址空间的内容以外,均存放在操作系统的一张表中,称为进程表。
每个进程有一个工作目录,对于没有斜线开头给出的绝对地址的路径,将在这个工作目录下找。
进程可以通过使用系统调用来改变工作目录。
现代操作系统总复习资料
操作系统基础习题解析及实验指导2016.9第一篇操作系统基础知识点及习题解答该部分罗列操作系统基础各章节的学习要点,指出学习的重点和难点,在回顾相关知识点的基础上,对典型习题进行分析和解答。
第一章操作系统引论本章学习要点【1】掌握操作系统的概念与作用【2】掌握操作系统的基本类型与特点【3】掌握操作系统的特征与功能【4】深入领会多道程序设计技术本章学习难点【1】多道程序设计技术【2】操作系统的特征知识点回顾一. 操作系统的概念一个完整的计算机系统由计算机硬件系统和计算机软件系统两部分组成。
操作系统是配置在计算机硬件上的第一层软件,是对硬件系统功能的第一次扩充。
图1-1 计算机系统的层次图1.操作系统(Operating System,简称OS)的作用(1)OS作为用户与计算机硬件系统之间的接口OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。
或者说,用户在OS 的帮助下能够方便、快捷、安全、可靠地操纵计算机硬件和运行自己的程序。
(2)OS作为计算机系统资源的管理者这是广为流行的一个关于OS作用的观点。
在一个计算机系统中,通常都包含了各种各样的硬件和软件资源。
归纳起来可将资源分为四类:处理器、存储器、I/O设备以及信息(数据和程序)。
OS的主要功能正是针对这四类资源进行有效的管理。
(3)OS用作扩充机器对于一台完全没有软件配置的计算机系统(裸机),即使功能再强,也必定难于使用。
OS在第 1 页共102 页裸机上分别覆盖I/O设备管理软件、文件管理软件等,此时用户所看到的机器,将是一台比裸机功能更强、使用更方便的机器。
通常把覆盖了软件的机器称为扩充机器或虚机器。
在计算机系统上覆盖上一层软件后,系统功能便增强一级。
由于OS自身包含了若干层软件,因此当在裸机上覆盖上OS后,便可获得一台功能显著增强,使用极为方便的多层扩充机器或多层虚机器。
2.操作系统的概念操作系统是一组控制和管理计算机硬件和软件资源、合理组织计算机的工作流程,方便用户使用的程序的集合。
现代操作系统总复习资料
操作系统基础习题解析及实验指导2016.9第一篇操作系统基础知识点及习题解答该部分罗列操作系统基础各章节的学习要点,指出学习的重点和难点,在回顾相关知识点的基础上,对典型习题进行分析和解答。
第一章操作系统引论本章学习要点【1】掌握操作系统的概念与作用【2】掌握操作系统的基本类型与特点【3】掌握操作系统的特征与功能【4】深入领会多道程序设计技术本章学习难点【1】多道程序设计技术【2】操作系统的特征知识点回顾一. 操作系统的概念一个完整的计算机系统由计算机硬件系统和计算机软件系统两部分组成。
操作系统是配置在计算机硬件上的第一层软件,是对硬件系统功能的第一次扩充。
图1-1 计算机系统的层次图1.操作系统(Operating System,简称OS)的作用(1)OS作为用户与计算机硬件系统之间的接口OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。
或者说,用户在OS 的帮助下能够方便、快捷、安全、可靠地操纵计算机硬件和运行自己的程序。
(2)OS作为计算机系统资源的管理者这是广为流行的一个关于OS作用的观点。
在一个计算机系统中,通常都包含了各种各样的硬件和软件资源。
归纳起来可将资源分为四类:处理器、存储器、I/O设备以及信息(数据和程序)。
OS的主要功能正是针对这四类资源进行有效的管理。
(3)OS用作扩充机器对于一台完全没有软件配置的计算机系统(裸机),即使功能再强,也必定难于使用。
OS在第 1 页共102 页裸机上分别覆盖I/O设备管理软件、文件管理软件等,此时用户所看到的机器,将是一台比裸机功能更强、使用更方便的机器。
通常把覆盖了软件的机器称为扩充机器或虚机器。
在计算机系统上覆盖上一层软件后,系统功能便增强一级。
由于OS自身包含了若干层软件,因此当在裸机上覆盖上OS后,便可获得一台功能显著增强,使用极为方便的多层扩充机器或多层虚机器。
2.操作系统的概念操作系统是一组控制和管理计算机硬件和软件资源、合理组织计算机的工作流程,方便用户使用的程序的集合。
《现代操作系统》重点纲要
第一章:引论操作系统是运行在内核态的软件,为程序猿提供资源集抽象以及管理硬件1.1.2主要任务:记录那个程序在用什么资源,管理资源分配,评估使用代价,调节冲突1.3.11.操作系统必须知道所有的寄存器,以便中断时保存进度2.用户程序在用户态运行时,仅允许执行至灵级的一个子集,一般不能调用IO和内存保护指令3.陷阱:a. 用于执行系统调用b. 多数由硬件引起,用于警告异常4.超线程:无并行处理,线程切换纳秒级1.3.2存储器1. 寄存器(和CPU一样快)-》高速缓存(多级缓存)-》主存(RAM ROM EEROM 闪存)1.3.3上下文切换:多道程序系统中从一个程序切换到另一个程序1.3.51. 设备驱动程序:控制IO设备,与控制器对话并收发命令2. 设备存储器:映射到操作空间A.优点:不需要特定IO指令B.缺点:占地址空间(8088)3. 实现输入输出的方法:A.忙等待:设备驱动循环检查IOB.操作完成时中断C.使用特殊的直接存储器访问芯片DMA1.3.61. USB:通用串行总线,键盘鼠标等慢速设备1.3.7启动1. 加电-》BIOS检查硬件-》BIOS查询启动设备(设备第一扇区用启动签名才可以作为启动设备)-》硬盘第一区(MBR),分区表,超级块等1.5.1进程1. 本质:正在执行的程序的实例,地址空间(core image 进程可读写,有数据和堆栈)。
2. 相关:资源集(寄存器,报警,文件清单等)3. 容许运行一个程序所需要所有信息的容器4. UID与GID1.5.31. IO设备的分类:A.块设备:硬盘,可随机读取B.字符特殊文件:键盘鼠标2.管道:虚文件,连接进程1.6系统调用1. 用户程序与操作系统交互:处理抽象2. 能进入内核的过程调用用户态切换到核心态三种方法:中断,异常,系统调用3.TRAP指令:副作用切换到内核态1.7.3微内核1. 高可靠性,把操作系统划分成小的,定义良好的模块,只有微内核运行在内核,其他是普通用户程序2. 设备驱动:崩溃不会导致系统死机3. 机制与策略分离第二章:进程与线程2.1进程模型1. 多道程序设计:CPU在多个程序之间快速切换2. UNIX: 开始是相同,之后不同。
现代操作系统读书笔记
第一章:引论操作系统是运行在内核态的软件,为程序猿提供资源集抽象以及管理硬件1.1.2主要任务:记录那个程序在用什么资源,管理资源分配,评估使用代价,调节冲突1.3.11.操作系统必须知道所有的寄存器,以便中断时保存进度2.用户程序在用户态运行时,仅允许执行至灵级的一个子集,一般不能调用IO和内存保护指令3.陷阱:a. 用于执行系统调用b. 多数由硬件引起,用于警告异常4.超线程:无并行处理,线程切换纳秒级1.3.2存储器1. 寄存器(和CPU一样快)-》高速缓存(多级缓存)-》主存(RAM ROM EEROM 闪存)1.3.3上下文切换:多道程序系统中从一个程序切换到另一个程序1.3.51. 设备驱动程序:控制IO设备,与控制器对话并收发命令2. 设备存储器:映射到操作空间A.优点:不需要特定IO指令B.缺点:占地址空间(8088)3. 实现输入输出的方法:A.忙等待:设备驱动循环检查IOB.操作完成时中断C.使用特殊的直接存储器访问芯片DMA1.3.61. USB:通用串行总线,键盘鼠标等慢速设备1.3.7启动1. 加电-》BIOS检查硬件-》BIOS查询启动设备(设备第一扇区用启动签名才可以作为启动设备)-》硬盘第一区(MBR),分区表,超级块等1.5.1进程1. 本质:正在执行的程序的实例,地址空间(core image 进程可读写,有数据和堆栈)。
2. 相关:资源集(寄存器,报警,文件清单等)3. 容许运行一个程序所需要所有信息的容器4. UID与GID1.5.31. IO设备的分类:A.块设备:硬盘,可随机读取B.字符特殊文件:键盘鼠标2.管道:虚文件,连接进程1.6系统调用1. 用户程序与操作系统交互:处理抽象2. 能进入内核的过程调用用户态切换到核心态三种方法:中断,异常,系统调用3.TRAP指令:副作用切换到内核态1.7.3微内核1. 高可靠性,把操作系统划分成小的,定义良好的模块,只有微内核运行在内核,其他是普通用户程序2. 设备驱动:崩溃不会导致系统死机3. 机制与策略分离第二章:进程与线程2.1进程模型1. 多道程序设计:CPU在多个程序之间快速切换2. UNIX: 开始是相同,之后不同。
《操作系统教程》读书笔记模板
读书笔记模板
01 思维导图
03 读书笔记 05 精彩摘录
目录
02 内容摘要 04 目录分析 06 作者介绍
思维导图
本书关键字分析思维导图
实验
方式
管理
进程
结构
管理
文件
教程
并发
进程 设备
概念
读者
习题
简介
小结
存储管理
分配
功能
内容摘要
本书共分6章,内容包括操作系统概论、处理器管理及并发进程、存储管理、设备管理、文件管理,第六章简 单介绍了最流行的操作系统的基本情况;为便于读者自学和课后复习,每章都附有小结和习题。附录包括:为操 作系统的基本理论实验和创新实验项目,为操作系统课程设计的案例,供教师在实际教学或读者练习过程中选择 使用或参考。
1.2.1处理器管理 1.2.2存储管理 1.2.3设备管理 1.2.4文件管理
1.3.1操作接口和操作命令 1.3.2程序接口与系统调用
1.4.1整体式结构 1.4.2层次式结构 1.4.3客户/服务器结构 1.4.4虚拟机结构
1.5.1 Windows操作系统 1.5.2 UNIX操作系统 1.5.3 Linux操作系统 1.5.4 iOS操作系统 1.5.5 Android操作系统
读书笔记
大三上学的,学的时候没咋看,书都没仔细看过后来重看,发现这才是计算机有意思的地方入门书籍很不错,结 构清晰。
先入入门读个教材,操作系统是一种哲学。
目录分析
1.1操作系统的概念 1.2操作系统的功能
1.3操作系统的接口 1.4操作系统的结构
本章小结
1.5流行操作系统 简介
习题1
1.1.1操作系统的定义和目标 1.1.2操作系统的形成和发展 1.1.3操作系统的主要特性
现代操作系统书简介
现代操作系统书简介
《现代操作系统》是由Andrew S.Tanenbaum和Herbert Bos合著的一本操作系统教材,一直被视为操作系统领域的经典之作。
本书介绍了操作系统设计和实现的各个方面。
作者从操作系统的概念和发展历史开始,逐步深入到操作系统的组成部分、进程管理、内存管理、文件系统、I/O管理、网络管理等方面。
此外,本书还介绍了许多现代操作系统的实现细节和原理,如UNIX、Linux、Windows 等。
本书特点在于它的深度和广度。
作者根据多年的经验,对操作系统领域的一些关键问题和挑战进行了深入的分析和阐述。
此外,本书还特别注重对操作系统实践方面的指导。
书中提供了大量的例子、图表和代码,使读者可以更好地理解和实践所学的知识。
本书适合计算机科学与技术、信息与通信工程、电子信息工程、软件工程等专业的学生阅读,也是操作系统开发者、教师和研究人员的必备工具书。
读完本书,读者不仅能够深入理解现代操作系统的原理和实现,而且还能够掌握操作系统的开发和使用技能,更好地应对未来计算机科技发展的挑战。
天大《操作系统原理》学习笔记二
主 题题: 《操作系统原理》学习笔记 内 容容:《操作系统原理操作系统原理》》学习笔记学习笔记二二————进程管理进程管理进程管理处理机是计算机系统的核心资源。
操作系统的功能之一就是处理机管理。
计算机系统的效率主要是由处理机决定的。
处理机管理是整个操作系统的核心。
现代计算机系统多数是多道系统,且为单处理机系统。
处理机要同时运行多个作业的程序。
合理有效地管理和分配处理机资源,是操作系统的一个十分重要的任务。
处理机管理就是按照一定策略对处理机进行合理调配、以满足用户作业运行的需要。
为了准确地描述系统内多个作业的运行情况,以及对系统资源的管理和分配的情况,在现代计算机系统中都采用进程的概念。
现代计算机系统都是以进程作为分配资源和独立运行的基本单位。
所以处理机管理实质上是进程管理。
一、进程的基本概念进程的基本概念进程是操作系统中最重要的、最基本的概念。
对操作系统的设计和研究都是以进程作为出发点。
进程的概念是从程序中产生的,但它与程序有着本质的不同。
1、程序的顺序执行程序是“一组有序的操作序列”。
“操作”:机器指令、高级语言中的语句。
“有序”:操作必须按照严格的先后次序进行,必须在前一个操作完成后, 才能执行下一个操作。
一个复杂的程序也可以分为若干个程序段,各个程序段也是依照一定的次序逐个执行。
程序本身具有的顺序执行的特点。
在单道系统中程序执行时,具有顺序执行的特点,所以又把单道系统中的程序称为顺序程序。
顺序程序具有如下特性: 顺序性、程序运行时处理机必须严格按照程序所规定的顺序执行有关操作。
可再现性、如果程序在不同的时间重复执行,只要执行时的初始条件相同,程序运行结果必然相同。
封闭性、程序在运行时独占全部系统资源,这些资源的状态只由程序本身确定,只有该程序的操作才能改变资源的状态。
所以,程序在执行过程中不会受到外界因素的影响。
与时间无关性。
程序的运行结果与它执行的速度无关。
2、程序的并发执行由于通道技术和中断技术的不断完善,计算机系统出现了处理机与外部设备的并行工作方式,使得处理机可以同时运行多个用户的程序。
操作系统课程学习笔记
操作系统课程学习笔记在学习操作系统这门课程的过程中,我收获了许多宝贵的知识和深刻的理解。
操作系统作为计算机系统的核心,管理着计算机的硬件和软件资源,为用户和应用程序提供了一个稳定、高效和安全的运行环境。
以下是我对这门课程的详细学习笔记。
一、操作系统的概述操作系统是一种系统软件,它位于计算机硬件和应用程序之间,负责管理和协调计算机的各种资源,如处理器、内存、存储设备、输入输出设备等。
其主要功能包括进程管理、内存管理、文件管理、设备管理和提供用户接口。
操作系统的类型多种多样,常见的有批处理操作系统、分时操作系统、实时操作系统和网络操作系统等。
批处理操作系统适用于大规模的作业处理,分时操作系统允许多个用户同时使用计算机,实时操作系统则对响应时间有严格要求,网络操作系统则侧重于网络资源的管理和共享。
二、进程管理进程是操作系统中最基本的概念之一。
它是程序的一次执行过程,包括程序代码、数据和进程控制块(PCB)。
进程具有动态性、并发性、独立性和异步性等特点。
进程的状态通常包括就绪态、运行态和阻塞态。
进程的调度算法决定了哪个进程能够获得处理器资源,常见的调度算法有先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)和优先级调度等。
进程之间存在同步和互斥的关系。
同步是指多个进程为了完成共同的任务而协调工作,互斥则是指多个进程在访问共享资源时需要进行排他性的控制,以避免数据不一致和错误。
通过使用信号量、管程等机制可以实现进程的同步和互斥。
三、内存管理内存是计算机中用于存储程序和数据的重要资源。
内存管理的主要任务是合理地分配和回收内存空间,提高内存的利用率,并保证程序的正确运行。
内存分配的方式有连续分配和离散分配。
连续分配包括单一连续分配和分区分配,离散分配则包括分页存储管理、分段存储管理和段页式存储管理。
虚拟内存技术是内存管理中的一个重要概念。
它通过将部分程序和数据暂时存储在外部存储设备上,使得计算机能够运行比实际物理内存更大的程序。
《现代操作系统》精读与思考笔记第一章引论
《现代操作系统》精读与思考笔记第⼀章引论 本系列博⽂是《现代操作系统(英⽂第三版)》(Modern Operating Systems,简称MOS)的阅读笔记,定位是正⽂精要部分的摘录和课后习题精解,因此不会事⽆巨细的全⾯摘抄,仅仅根据个⼈情况进⾏记录和推荐。
由于是英⽂版,部分内容会使⽤英⽂原⽂。
课后习题的选择标准:尽量避免单纯的概念考察(如:What is spooling?)或者简单的数值计算,⽽是能够引起思考加深理解的题⽬。
为了保证解答的正确性,每道题都会附上作者的原⽂解答,⽽中⽂部分会适当加⼊⾃⼰的见解。
原书答案(需注册)概念名称回顾 硬件简介:处理器、存储器、磁盘、磁带、I/O设备、总线 各式各样的操作系统:⼤型机OS、服务器OS、多进程OS、个⼈电脑OS、⼿持电脑OS、嵌⼊式OS、实时OS、智能卡OS 操作系统概念:进程、地址空间、⽂件、I/O、保护策略、Shell 系统调⽤ 操作系统结构:单⼀系统、层次化系统、微内核、C/S、虚拟机、外内核1.以count = read(fd,buffer,nbytes)为例,解析系统调⽤发⽣的过程 原书P50~52,左边是原书调⽤流程表⽰,右边是我根据正⽂进⾏的整理。
⼀些翻译可能不准确,标记了英⽂原⽂进⾏对照。
2.编写⼀个简单的shell 主要是为了展⽰进程操作的系统调⽤;同时,shell的基本⼯作⽅式通过这个解剖过程不再神秘。
下⾯伪码来⾃于原书P54图1-19。
#define TRUE 1while(TRUE) { /* repeat forever */ type_prompt(); /* display prompt on the screen */ read_command(command,parameters); /* read input from terminal */ if(fork()!=0) { /* fork off child process */ /* Parent code */ waitpid(-1,&status,0); /* wait for child to exit */ } else { /* Child code */ execve(command,parameters,0); /* execute command */ }}3.link原理 最初接触unix时,是按照windows中“快捷⽅式”的形式理解link的。
