《现代操作系统》学习笔记.docx

《现代操作系统》学习笔记.docx

ID:57216551

大小:1.12 MB

页数:38页

时间:2020-08-06

《现代操作系统》学习笔记.docx_第1页
《现代操作系统》学习笔记.docx_第2页
《现代操作系统》学习笔记.docx_第3页
《现代操作系统》学习笔记.docx_第4页
《现代操作系统》学习笔记.docx_第5页
资源描述:

《《现代操作系统》学习笔记.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《现代操作系统》看了两个多月才看了前面200页,很多都似懂非懂,权且将自己认为重要的概念抄下来,以备后续查看。0.概述(1)操作系统的概念对操作系统的定义,有两种说法,一种声称操作系统是计算机的扩展器,一种声称操作系统是计算机资源集的抽象。所谓操作系统是计算机的扩展,是将操作系统当做计算机对外的接口。对外包括对应用程序,对程序员,对用户。操作系统对计算机进行“化妆”,将计算机“丑陋晦涩”的硬件对外隐藏,而向外呈现界面友好清晰,更易理解的操作系统。如下图所示:所谓操作系统是计算机资源集的抽象,是指操作系统将计算机资源(处理器,存储器以及I/O设备等)进行抽象以及管理。将CPU处理抽象为进程

2、,将内存抽象为地址空间,磁盘抽象成文件。而这一切抽象都是为了实现多道程序设计,即可以在一个计算机上同时运行多个互不干扰程序。(2)操作系统的作用操作系统的主要任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O接口设备的分配。其主要任务包括管理资源分配,评估使用代价和调节资源分配的冲突,记录哪个程序在用什么资源,用多少,用多久。资源管理包括用以下两种不同方式实现多路复用:在时间上复用(进程调度:CPU时间片轮转)和在空间上复用(内存管理:虚拟内存,页面置换;磁盘管理:文件系统)。在时间上分配CPU资源需要考虑该进程在上面运行多久,下一次切换到哪一个进程。在空间上分配存储空间

3、需要考虑给每个进程分配多少内存,如果内存不足的时候,将哪个页面置换到磁盘以腾出空间。操作系统的主要功能:为用户程序提供抽象和管理计算机资源。用户程序和操作系统之间的交互处理是前者。用户程序和操作系统之间的交互主要是处理抽象。对于管理计算机资源系统(进程调度,内存置换等)一般自动完成。所以主要是用户程序与操作系统的交互。用户程序通过操作系统提供的接口来访问底层的系统。操作系统提供一种特殊的过程调用——系统调用,该种过程调用可以由用户态陷入内核态对底层进行操作。比如可以创建和退出进程,打开和读写文件等。目前主要由以下几种系统调用函数——进程管理,文件管理,目录和文件系统管理以及其他。常用的系

4、统调用可以参见下表:(3)为什么要了解操作系统之前跟同事说我没有修过操作系统,想补补操作系统,同事说操作系统工作中很少用,我当时想学习操作系统也跟我学习数据结构后一个感觉——很难很有趣但是工作中用不着。而老大却一再跟我说,让我打好基础,好好补补操作系统,计算机网络等基础课程。而我自己看了操作系统之后,突然恍然大悟,oh,原来学习数据结构就是为了学习操作系统呀呀呀~~(*^__^*)嘻嘻……瞎扯完,言归正传。我当时学习操作系统源于工作中遇到一个父子进程共享文件描述符的坑。这个坑坑得我好惨啊,因为其具有偶发性,而且完全没有日志迹象查询,只知道在入口处数据就莫名其妙丢了。之前同事也遇到过这种情

5、况,只是定位怀疑有一段代码存在问题,总是觉得那段fork子进程的代码有问题,后来因为这个bug复现少,所以也不了了之。后来因为系统用得越来越多,这个问题复现概率大大提高,于是开始打日志,每一个操作都打日志,最后在老大的英明神武下,发现了原来是在fork子进程之前没有关闭父进程使用的队列连接。如果没有老大,估计打死我也不知道如何解决这个问题。因为我完全不知道这个基础知识。虽然后来老大跟我说了父子进程共享文件描述符的知识,也说了数据可能被子进程的队列连接socket的handle读走了。但是我还是似懂非懂,于是乎,我决定好好补补操作系统。除了因为这个坑,还因为每次老大跟我说内存,cpu,进程

6、,线程我都没概念,所以我决定脑补下,^_^。吐槽完总结下,了解操作系统就是为了理解计算机是如何工作的,以及程序如何运行的,从而优化程序更好地实现需求,达到预期目的。(a)程序在运行的时候需要哪些资源,会受到哪些资源(如磁盘,内存,cpu等)限制。比如日常程序每天导库的时候需要例行将历史记录清除,以防磁盘空间不足。比如redis中的缓存过期数据也要定时清除,以防止redis内存不足而导致其他redis操作失败。在设置redis的max_memory的时候,也要考虑随着业务增长,对redis内存空间要求会越来越大。比如写程序的时候也要考虑程序可能要用到的最大内存,如果使用内存超过系统默认分配

7、内存,将导致程序出错退出。比如使用sort命令或awk联合数组对大文件排序的时候可能导致内存使用率100%。比如使用fork子进程的,要考虑cpu的限制,不能fork很多子进程,最好使用taskset设置空出一两个核以使机器负载不至于过高,还有fork子进程要记得exit,否则资源不释放,会导致cpu飙到100%。比如访问同一个资源(db或者redis)的时候要考虑qps,否则会使得资源cpu使用率过高,从而使得有些资源操作失败。影

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。