《现代操作系统》读书笔记2

转自:https://blog.csdn.net/ingwfj/article/details/52332615


再次拿起《现代操作系统》这本书,精心仔细阅读,又有了几点体会记录一下。

操作系统的功能或者说职责:向下管理资源,向上提供服务接口。OS作为中间层软件。操作系统涉及到的主要内容有进程和线程、文件系统、死锁、内存管理、I/O管理等。

进程和线程涉及到概念、区别、类别等,进程是存在输入输出和状态的一段正在执行的程序,是动态的而非仅仅是静态的程序。进程就涉及到其运行、阻塞和就绪的生命周期,其实程序方面很多都存在生命周期,例如java的诸多框架中例如spring中存在对象的生命周期,structs中请求存在生命周期等。进程中重要的概念是进程表,存储在内存中,其单位是进程表项即entry,看到entry就想起了java中集合类中的entry内部类,java的内部类被很多人推崇而同时又被另外一些人所诟病,其实进程表是所有在内存中的和不再内存中的进程的reference,其内保存了进程的状态数据,说实话表看来真的很给力,在很多地方会看到表的广泛应用和巨大威力,例如数据库的基层就是表当然是关系型数据库,新的NoSQL类型打破了一些传统,例如在网络中表格也起着格式存储数据的作用,现实生活中表格也是重要的。对于线程,有两点很让我感兴趣的方面,一个是用户空间中的线程模型和内核空间中的线程模型,不同的模型应用到了不同的实际操作系统中。另一个是进程之间的通信和同步互斥机制,涉及到中断机制、忙等待、原语、生产者-消费者模型、PV操作、互斥量、管程、屏障等概念。还有进程需要调度算法来进行调度的,因为内存资源有限而且为了最大地提高运行效率最大的利用CPU而导致诸多调度算法,例如先来先服务算法、最短作业优先、最短剩余时间优先、彩票调度等。哲学家就餐问题和读者-写者问题资料也很多。还有进程的互斥和同步、阻塞和非阻塞、同步和异步之间的区别我找了半天才明白。

进程阻塞和非阻塞的区别:http://www.zhihu.com/question/19732473

进程的互斥和同步:http://blog.chinaunix.net/uid-26748613-id-3201137.html

进程的同步与异步:http://blog.sina.com.cn/s/blog_8c0c9acd0101cp3u.html

内存管理方面,涉及到虚拟内存机制、MMU、TLB、分页和分段机制、页面置换算法等问题。我从这章深切体会到两点:一,问题是充满矛盾的,经常是没有最终确定的答案,最重要的分析的过程,提出一种方案分析其涉及的方面,他的优点和缺点,有很多解决方法但是没有完美方案,就像没有银弹一样。哲学中矛盾是一大核心,也是其一些理论支撑的基础,现实中矛盾是无时无刻不有的;第二,在操作系统中,进程/线程是对实际CPU的抽象,地址空间是对物理内存的抽象,文件是对物理内存的抽象,I/O流是对硬件输入输出设备的抽象。而抽象和模拟一直是我对计算机、网络、操作系统、语言等方面的核心认识,而在抽象之后就需要增删改查、管理、优化算法等方面,整个操作系统就是讲这些东西。

文件系统中涉及到磁盘、磁盘管理、文件系统存储模式、高速缓存等。文件系统就联系到数据结构中学到B树、B+树、B*树等数据结构知识。

I/O处理方面,包括中断处理系统、设备驱动程序、与设备无关的I/O软件、用户级I/O软件等软件方面内容和I/O硬件例如DMA、设备驱动、设备控制等。一大感受是DMA控制器中有地址寄存器、计数寄存器、控制寄存器,DMA可以进行独立访问总线,可以进行存储,可以进行控制,不能进行计算,这不就相当于缩减版的CPU吗?他确实分担了部分CPU的工作使得CPU可以做其他工作以提高其利用率。这其中中断起着关键作用,中断控制器属于计算机系统结构方面知识,可是他起着中断接受、排队、屏蔽等作用。

死锁应该是最激动人心的方面,因为诸多算法在其中啊。为了避免死锁,设置安全状态和非安全状态,使用多维度轨迹路线算法,使用银行家算法,并且创建了打破死锁状况的方法,当然书中坦言没办法避免死锁,因为进程是动态,所需资源无法预计,资源是否能用不确定。我比较喜欢算法研究,所以激动人心啊。


总之,操作系统是一种管理软件,他特别像公司,公司的员工是硬件资源,而公司的制度便是这个系统,然而制度是为了做什么的?为了有效配置人员,为了提高效率啊。操作系统也是啊,为了管理资源,为了最大的提高效率,为了给应用软件提供接口。他是一个平台,是软件的根基,是一种先进的理念。


猜你喜欢

转载自blog.csdn.net/qq_17368865/article/details/80030631