操作系统结构

一、操作系统做什么?

1.操作系统定义

A program that acts as an intermediary between a user
and the comupter hardware.
计算机硬件和用户(人和程序)之间的一个中介

2.操作系统目标
  • 使用户方便使用计算机
  • 是计算机硬件高效率运行

二、硬件系统组成

  • cpu(s) + 设备控制器 通过总线(控制(用来通信的,一些状态)、数据和地址三个内部总线和外部总线)连接在一起,它们共享内存
  • 这些cpus和设备并行执行,并且竞争使用内存。


三、4个层次

操作系统把硬件包起来了,所有的对硬件的操作必须经过操作系统。

  • 用户
  • 应用程序
  • 操作系统
  • 硬件

四、现代操作系统的特征

1.多程序 Mutiprogramming

这是为了提高CPU的使用效率

一个简单的例子
如果系统上只能有一个用户。一个用户程序的操作需要CPU执行它的指令,还需要I/O来作它的输入输出。只有CPU指令,没有I/O,这有什么意义hhh,而只有I/O没有CPU更不可能,因为I/O就是CPU控制的。所以有一个很明显的问题就是CPU执行指令时候,I/O就停了,而I/O时候,CPU又停了不执行指令了。
为了解决这种低效问题,一个基本想法就是,可不可以在系统里面装两个程序,当一个在I/O时候,它没有使用CPU,能不能启动另一个程序让它使用CPU?这样不就是让CPU使用率提高了吗?

嗯就是这样,有两个以上程序可以驻留内存,这种状态就叫Mutiprogramming

  • 单用户系统有缺陷,无法让CPU和I/O同时处于运转状态
  • 多程序思想让多个程序竞争CPU,提高了CPU的使用效率
  • 作业调度器每次选择一个作业,交给CPU执行
  • 当前作业需要等待时候(例如有I/O操作),CPU转向另一个作业
2.多任务 Multitasking 分时系统 Timesharing

在多程序思想的基础上扩展,Multiprogramming只要求多个程序驻留在内存中,CPU有空时候给程序分配资源就可以,而Multitasking则要求不但是驻留在内存,还要求在程序需要CPU时候,CPU能及时给它!响应用户的交互操作。称为交互式计算

一个简单的例子
如果不具备这样的及时性,会有什么后果?一台计算机,能播放PPT还能接收邮件,这算是有多程序思想了。此时如果你在这里疯狂读PPT,而永远不去理睬e-mail,接收e-mail的程序永远得不到CPU资源,那么e-mail发过来了不响应就丢失了。邮件是什么,邮件给谁的,这并不重要,但是必须要先及时的响应,把它接收过来,不然就丢失在茫茫网海中了hhh。所以读PPT时候,要让邮件程序有收邮件的机会。而反过来一样,如果在接受一个很大的邮件,需要一定的时间接收,PPT此时得不到CPU,不动了,那还怎么学习,会给用户造成机器死机的感觉。

这就是Multiprogramming的重要性。必须要支持这样的需求!由此引出了操作系统的各种概念。

  • 响应时间 Response time 在一秒内
  • 每个用户至少有一道作业在内存中执行——进程
  • 存在两个以上的进程等待CPU执行——CPU调度
  • 内存空间装不下进程——需要换入、换出操作
  • 虚拟内存管理技术,是的小内存也能运行大进程
3.CPU提供Dual-mode机制
  • 用户态(user mode)和内核态(kernel mode)
    这样是为了OS的自我保护。从硬件层解决这个问题,CPU有个Mode bit模式位,可以在内核态(1)和用户态(0)之间切换。
    • 以Mode bit区分系统在执行用户代码还是内核代码
    • CPU带有特权指令,这些指令只能在内核态执行。特权指令一般是可能引起损害的机器指令。
    • 用户态下需要操作系统服务,那么系统调用此时就会从用户态切换至内核态,系统调用返回指令自动从内核态切换到用户态。


4.其他特征
  • 中断驱动的硬件操作:什么任务到了,引发一个中断,没有中断就休息了。有任务才去搞。
  • 软件申请,软件操作错误等,将产生异常或陷入
  • 面临
    • “无限循环”问题
    • 进程干扰其它进程问题
    • 进程干扰OS问题
      ......

五、操作系统的服务类别

一共有两类服务。

1.一类服务直接帮助用户
  • 用户界面(UI user interface)
    用户通过用户界面向操作系统下达命令。

    • 命令行CLI(Command-Line)
      文本命令,用户直接输入让操作系统执行的命令。如shell。
    • 图形用户界面GUI(Graphics User Interface)
      提供了视图,有定位设备指挥I/O,从菜单选择,选中部分并用键盘输入文本等等 。这个最常见不过了。
    • 批处理(Batch)
      这是个啥我也没见过具体例子Hhh,控制命令和命令的指令被输入文件中,通过执行文件来实现。
  • 程序执行
    是OS能够装入程序到内存,执行驻留在内存的程序,结束程序的而执行,以及出错时候的异常处理。

  • I/O操作

  • 文件系统相关操作

  • 进程间通信

    • 通过共享内存实现通信
    • 通过消息传递实现通信
  • 出错检测
    要能随时应对系统出错,对各种各样的来自CPU、内存或I/O设备等地方的错误提供调试、查错工具。

2.另一类服务确保系统共享资源的高效运作

就是我们在上面举例中的PPT和e-mail按个实例

  • 资源分配

  • 记账——跟踪记录那些用户使用了多少资源,使用了哪些资源

  • 保护和安全

    • 保护——确保对资源的访问是受控的
    • 安全——外来访问需要通过身份认证,不允许非法访问

六、操作系统的服务功能

进程管理
内存管理
存储设备管理
大容量存储器管理
I/O子系统管理

七、系统调用 System Calls

用户程序和系统软件与操作系统之间的界面。提供了操作系统的有效服务界面。

一个简单例子

这是进行文件复制时候的一个示例,用到了各种系统调用,文件管理的这些操作的实现都是要通过操作系统的系统调用来帮忙:
1.通常用高级语言C/C++实现
2.程序通常以API(Application Program Interface)使用,而不是直接使用系统调用。
3.三种流行的APIs
  • Win32 API for Windows
  • POSIX API for POSIX-based systems(UNIX\Linux和Mac OS X版本)
  • JAVA API for the JVM
4.为什么要用API,而不是直接系统调用?

因为太菜了hhhh,开个玩笑。
普通用户不懂啊,普通的用户要理解系统调用的概念是有困难的,编程序的人可能不懂这个啊,也要让他去写程序。比如linux系统调用都是使用int 0x80号中断来实现的,普通用户根本不懂这些中断什么的。所以OS提供API,用户可以调用比较容易一点的API来实现系统调用。而不是把系统调用扔给你。

一个简单示例
下面就是调用标准C库里面的printf,用户调用printf,C程序拦截了这个调用来调用必要的操作系统调用(这里是write()),真正实现写字符输出的是系统调用的write(),用户程序只需要调用C库中的API就可以了。这个printf则是专业人士写的,为了用户的方便,他不用去用中断去实现打印,而只需要调用printf,printf帮助它做更底层的东西——引起int 0x80,进入内核态,调用write(),write()完成任务之后,又跳回到用户态,printf的代码中,printf再return到用户程序。


API和System Call和操作系统之间的关联如下所示


八、系统程序 System Programs

系统程序提供了一个方便的环境以开发程序和执行程序,其中一小部分知识系统调用的简单接口,其他可能是相当复杂的。

系统程序分类

  • 文件操作
  • 状态信息展示
  • 文件内容修改
  • 编程语言支持
  • 程序装入和执行
  • 用户间通信

以用户考察OS的视角,OS是以系统程序描述的,而不是系统调用。

九、操作系统结构

简单结构

层次化结构


从低到高:
硬件——硬件设备控制器——内核驱动程序——内核里的管理子系统——内核提供的系统调用——用户程序

微内核 microkernel

基本思想:尽量把内核中的所有非基本部分移出到用户态空间,将它们实现为系统程序或用户程序。剩下的就是微内核(通常包含最小的进程、内存管理以及通信功能)。处于用户态空间的功能模块通过消息传递机制进行通信。

  • 有利因素
    • 容易升级微内核
    • 容易移植OS到不同类型的CPU、体系结构
    • 更可靠
    • 更安全
  • 不利因素
    -被移出之后,用户态空间的程序增多,它们之间通信都要借助操作系统帮忙,每次通信都要从用户态转到内核态,不停的切换,那么用户态和内核态空间通信频繁,性能开销大,这是很致命的!


模块 modules

现代操作系统大多实现了内核模块机制。

  • 应用面向对象思想方法
  • 核心组件相对独立、分离
  • 模块之间通过预知的界面对话
  • 可动态装入内核
  • 可动态卸载
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容