进程-操作系统结构
中文仅本人理解,有错误请联系我。
操作系统为不同方面服务,有不同的设计角度。
为用户: 使用
为程序员:创造
程序员需要关注的就是system call接口的调度
file systems:ntfs,ext4
communication:进程之间通信的服务,让它们可以互相传递数据
UI.(user interfaces)分类:
CLI.:linux shell
GUI:图形化接口
batch:包含命令和指示的一个文件,类似于批处理文件
system call分类:
系统调用的实现代码是操作系统级别的
这个接口通常是面向程序员的
system call开放api,程序员只需要放入api需要的对应参数,得到api返回的对应值。
例如:调用printf这个写在c的lib库中的api
user mode和kernel mode双重模式
用户模式:执行用户代码
内核模式:执行操作系统代码
状态码 0代表内核模式,1代表用户模式
上面知道了操作系统是如何设计陷阱来让一个进程在用户模式和系统模式切换
那么我们在切换到系统模式的时候还需要调用系统级别的函数。
那么上面的问题操作系统是如何实现的呢?
系统调用有一个编号
程序调用时,程序会把需要调用的系统调用好写入一个寄存器,内核从寄存器中读取这个编号,查索引表,确定调用system call函数。
程序产生的进程号是一个随机数,也就是一个动态分配的号码,但是此进程所产生的系统调用号是固定的
操作系统的设计思路
设计目标:
用户目标:美观,舒适度
系统目标:调用api通用性
机制与策略的分离:
机制(machanism):如何做,系统如何调度程序在用户模式和系统模式进行切换
策略(policy):做什么,在多进程(任务)的复杂情况下,谁先谁后是个问题
微内核操作系统:是一个机制和策略分离系统的典型模板如mac os的内核。
GNU/LINUX:
Open-source os
Close-source os
hybrid os
GUN is not Unix
Unix是要钱的,但是GUN的目的是在付费系统上开放软件代码。
GUN项目的发布需要满足GPL
由于开源思想的盛行,并逐渐被一群极客推崇,所以就有了类unix 内核的linux 内核出现
linux著名的发行版本