学习操作系统要会的前期知识:基本数据结构与算法、计算机组成、一门编程语言。
操作系统: 是管理计算机硬件的程序。充当用户和硬件之间的媒介。
问:为什么要有操作系统?
答:为了更好的管理计算机的硬件和编写软件。(由操作系统统一管理硬件,而不是各个应用程序自己来操作硬件)。
本质上讲,计算机就是用来计算的,运行的软件最终也要落实到硬件上。例如word文档编辑软件,如果没有操作系统,那么这个软件既要有接收鼠标和键盘输入的功能,又要有管理硬盘来保存文档的功能,还要控制显示器的输出功能。
计算机领域一个重要的概念就是抽象与分层,所以就有了操作系统这个大管家,来统一管理硬件。还是上面的例子,键盘的输入不会直接到word,键盘设备的输入会到操作系统,由操作系统处理后再传递到word软件。这样word软件也变得好写多了。
接下来将从计算机系统说起,讲到操作系统的各个方面。
计算机的四个组件:硬件、操作系统、应用程序、用户。
CPU、设备控制器、总线。
CPU和若干设备控制器通过总线相连接,总线提供共享内存的访问。
CPU取指是到内存中去取,只有把程序加载到内存中才能被执行。
操作系统也是程序,但是它在硬盘里啊,它是怎么被执行的呢?
答:
(1)计算机打开电源,立马运行一个初始程序(也叫引导程序,bootstrap program),一般位于计算机的主板里。
(2)引导程序加载操作系统内核到内存,然后执行内核。
(3)操作系统会启动一些系统进程或后台程序,系统就开始服务了。
操作系统能工作是因为有中断。通过中断来通知操作系统有事件发生,然后操作系统才根据中断来决定要做的事情,要是没有中断,操作系统就不会执行,无所事事。
上面说到CPU只去内存中取指令,所以程序必须被加载到内存中。可以把要执行的程序统统放到内存中,但是(1)内存的容量有限,价格昂贵(2)内存是易失性的,即掉电丢失。
所以要把程序先存到掉电不丢失且容量大,便宜的磁盘或硬盘中,等要运行程序时,把程序从硬盘加载到内存再取指令执行。
存储器也是属于IO设备。
CPU通过总线与设备控制器相连。
操作系统为每个设备控制器提供一个设备驱动程序。
设备控制器负责相关设备与本地缓冲存储之间进行数据传递。(注:)
单处理器:一个通用CPU。
多处理器:(1)主从关系(2)对等关系。
多个CPU或者多个计算核(多核处理器)。
前面讨论了计算机系统的组成和体系结构,下面说说操作系统。
操作系统最重要的能力就是多道程序并发运行的能力。
多道程序设计就是使CPU在一段时间内可以执行多个程序,而不是彻底执行完A程序,再去执行B程序。运行中的程序称为进程。
现代操作系统时中断驱动的,如果没有中断,就代表没有事件发生,操作系统就默默地等待着。
操作系统的权力很大,能执行一些特权指令,而用户程序则不能。
为了确保操作系统的正确运行,分为两种模式:用户模式、系统模式。
计算机硬件通过一个模式位来表示当前的模式。
用户模式就是CPU执行用户代码。系统模式就是CPU执行操作系统的代码。
有了多种模式,用户代码的权力就会受到限制,就不会因为出错而导致整个系统的错乱。
执行的程序称为进程。/为了完成任务,进程需要一些资源,如CPU时间、内存、文件、IO设备。
操作系统负责进程管理的以下功能:
由于局部性原理,高级缓存能极大的提高计算机的效率。
高速缓存的设计必须很精妙,才能发挥出它的性能。
操作系统要为用户隐藏具体硬件设备的特性。
计算机有多个用户,而且多个进程并发执行。就要确保各个用户互不干扰且安全可靠。
UNIX中有用户ID,组ID。
一个文件有三种权限:所有者、组用户、其他用户。
在操作系统内核中常用的一些基本的数据结构:
列表、栈、队列、树、哈希表、位图。
Linux、BSD UNIX、Solaris……
本章是导论的知识,对操作系统的大体认识和形成一个整体框架。
了解计算机系统的组成和操作系统的组成及其各部分的功能。