系统编程-操作系统概论PART2
<1> 操作系统提供的服务
<2> 现代操作系统的特征
2.1 微内核(英文中常译作µ-kernel或者micro kernel)
这是一种能够提供必要服务的操作系统内核;其中这些必要的服务包括任务,线程,交互进程通信(IPC,Inter-Process Communication)以及内存管理等等。
所有服务(包括设备驱动)在用户模式下运行,而处理这些服务同处理其他的任何一个程序一样。
因为每个服务只是在自己的地址空间运行。所以这些服务之间彼此之间都受到了保护。
2.2 分布式操作系统(Distributed Operating System)
分布式操作系统是将负载分散到多个计算机硬件服务器上的系统。这种操作系统提供更好的性能和可用性,因为它分布在多个组件中。
PS: 分布式软件系统
分布式软件系统(Distributed Software Systems),是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。
它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。
2.3 面向对象设计
面向对象设计有利于模块化设计,有利于扩展
<3> 操作系统的历史
下图红线左侧的都是unix操作系统
windows macOS linux 和unix 的关系
<4> Linux操作系统的基本构成
内核
ubuntu源码目录
ubuntu上的内核压缩文件, BootLoader加载的就是这个文件
最小文件系统: BootLoader先加载该最小文件系统,它会执行一些初始化操作,完毕后才会加载根文件系统。
<5> 启动流程
<6> init进程
<7> 内存管理概述
Linux操作系统的内存布局
而下图主要是更清晰地展示了内核空间的布局
<8> 段页式内存管理
<9> 系统调用
我们自己写的应用程序、linux的shell、一些库函数,都可以调用系统调用来获得操作系统内核提供的服务。
在调用系统调用过程中,和调用系统调用结束之后,Linux的进程的运行状态会发生变化,前者在内核态,后者处在用户态。
PS:不同的具体的操作系统提供的系统调用都不一样吗?
NO!有标准,这就是POSIX标准
.