IT铁人
System Call的目的是作为执行中user process与kernel沟通的介面,代表OS可以提供的服务项目,当process执行时,若需要OS提供某种服务(例如Disk read txt内容),process会issue Trap,带入system call ID及其相关参数(例如invoke the required system call),当OS收到此请求後,会去执行对应的system call,当完成後,再将结果通知传回给process。
如果用比较日常发生的事情来说,像是我们去超商取货,一定是告诉店员手机末3码以及名字,然後店员找到包裹後再拿给我们确认。这种翻包裹的动作不会让我们自己拿,因为可能有其他人包裹的安全性之类的考量。
跟店员说要取包裹就像是一种system call,而提供手机末3码及名字就是相关参数,包裹就像是结果。
OS中有许多的System Call,大致上可以分成下面6种:
类型 | 内容 |
---|---|
Process Control | Process create/terminate/block |
File Management | Fopen, Fclose, Fread, Fwrite |
Device Management | I/O |
Information Maintenance | status, timer, date... |
Communications | Process间的沟通、recv、send |
Protection | Control access to resource, Get & Set permissions, Allow and Deny user Access |
这些都是因为可能危害系统安全所以要交给OS处理的部分,Process Controll是一个大章节,会在後面做介绍。
前面说要把System Call的相关系数传给OS,传输的方式主要有下列三种:
方法 | 优点 | 缺点 |
---|---|---|
利用Registers保存参数,OS从这些Registers读取参数 | Simple, fast access(without memory access) | 不适合用在大量参数的状况(Register数量有限) |
利用memory,以一个Block保存这些参数,且将此Block的位址存在一个Register中,传给OS | 适用大量参数的情况 | 存取速度较慢 |
准备一个Stack,参数可被push进去Stack,OS在从此Stack pop已取得参数 | 适用大量参数的情况,操作比较简单 | Stack size要大,避免overflow |
前面介绍了要有System Call,kernel/user mode来保护系统以及其他process的安全,不过实作OS的方式有很多种,以下介绍七种不同的实作类型:
Simple
一如其名,他没办法Multitask,也没有区分Dual-mode。
有名的例子是MS-DOS。
More complex than Simple
他的OS分成两块,System Program和The kernel,概念上是把靠近硬体的放在更内层的kernel。
原始的UNIX采用这种方式。
Layered Approach
是比较抽象的模型,切分Layer的方式因系统而异,采用Top-Down切割,将系统分解成数个关键元件,上层可以使用下层功能,但下层不能使用上层功能,所以可以用Bottom-up测试。
好处是易於分工也方便测试;而坏处是Layer分割不易,并且Performance会因为Layer太多而降低。
Microkernel
CMU提出的观念,是为了简化UNIX。
将kernel中一些比较不基本的Service从kernel中移除,改成以system library方式提供,以便得到一个较小的kernel,称为Microkernel。
好处是microkernel易於延伸(改变可以坐在user site),OS也方便移植到另一个硬体架构(microkernel小,所以修改的量不大),并且更安全(增加的service放在user site,所以kernel出错机会低);坏处是Performance变差(user site跟kernel的沟通变多)。
Monolithic kernel
与Microkernel相反,把kernel services都放在kernel mode。
优缺点也相反。
大部分的OS皆采用此作法(e.g. UNIX, Linux, Windows, Apple OS)。
Modular
像是打包成不同的包裹,称为Loadable kernel modules(LKM),需要某个功能的时候把需要的包读进Memory。
例子有Linux, Soloris...
Hybrid
基本上就是每个种类都来一点,现今的OS都不会只有一种类型,像是打包的部分也有分成上下层,就是Modular跟Layered的混和。看起来就很复杂了...
介绍了system call的作用以及不同OS的设计方式,这些都是不断发展改良出来的结果,再加上电脑零件的发展很迅速,所以电脑知识成长的速度就很快,每次都会有永远学不完的感叹。
上一篇 | 下一篇 |
---|---|
Kernel Mode | Process |
<<: [Day16] Vue 3 单元测试 (Unit Testing) - Vue Test Utils + Jest 基本介绍 & 安装
>>: [Day 16] 我的资料哪有这麽平衡!第一季 (data augmentation)
哈罗大家好~ 所以接续昨天提到的内容,IT环境建置,除了要思考使用场景外,也要考量整体组织的 IT ...
自我介绍後台及前台 自定义性别 我们现在要开始做自我介绍的後台部分, 在这里我们要先建一个Enum,...
介绍 观看本篇前,建议先了解何谓 MVC 模式,简单说控制器的作用就像是交通警察,应用程序在接收 H...
今天来讲到第三题练习题 题目的大意就是: 有一个小弟弟正在玩积木,然後说他盖了一个城墙。 但他姐姐说...
今天用这个阳春的版面来介绍版面、字体、图示还有间距的设定。刚刚跟接案的客户谈完流程,也收了头款,大家...