1.引论

作者: SeaRise | 来源:发表于2017-11-07 19:39 被阅读1次

操作系统处于中间层向下管理和控制硬件,向上为外层软件和用户编写的程序提供使用方便、功能强大的服务。
就如下面视图所展示:
(Kernel mode:内核态 User mode:用户态)

image

操作系统的任务是:

  • 使用户方便的使用计算机。
  • 使计算机硬件高效的运行。

操作系统提供的抽象概念

操作系统为用户管理硬件资源,用户不需要面对硬件资源,而是面对操作系统提供的各种抽象概念进行操作。
操作系统提供的抽象概念主要有以下几种:

进程

进程我的理解是:进程是程序运行的载体,就好像杯子是水的载体一般。
进程包含了程序运行所需要的所有信息。(可执行程序,程序的堆栈等等)
与一个进程有关的所有信息,除了该进程自身地址空间的内容以外,均存放在操作系统的一张表中,称为进程表(数组或链表结构)。

地址空间

现代操作系统是多道程序设计的,就是说在内存中存在多个程序。
这时候就需要一个机制来隔离不同的程序,避免干扰。
现代操作系统通常使用虚拟内存技术。操作系统可以把部分地址空间装入主存,部分留在磁盘上,在需要时再交换它们。

文件

支持操作系统的一个重要的概念是文件系统
文件系统隐藏了磁盘和其他I/O设备的细节,统一提供了文件这个抽象的概念。

系统调用

如最上面的视图所展示的那样,操作系统运行在内核态(一般都是)。
所以操作系统所提供的抽象概念也在内核态。
但是一般的过程调用是进入不了内核态的,只有系统调用可以进入内核态,使用操作系统所提供的抽象概念。
除了进入内核态,系统调用和一般的过程调用没什么区别。如下图:

image

第5步应为read调用的系统调用编号;
第7步为根据系统调用编号在一张指针表中找到相应的程序运行

系统调用比一般的过程调用要复杂得多,所以一般操作系统会提供库调用,把系统调用包装的简单一些,如上面的那个图,4过程是read库调用,5才是read系统调用。

基本过程就是下面这个:
1参数nbytes压栈
2参数&buffer压栈
3参数fd压栈
4对库过程read进行实际调用
5把系统调用的编号放在寄存器中
6执行TRAP指令,切换到内核态,在内核中一个固定地址开始执行
7内核代码检查系统调用编号,发出系统调用处理指令
8系统调用句柄执行
9控制返回给用户空间库过程
10以通常的过程调用返回的方式,返回到用户程序
11用户程序清除堆栈空间

相关文章

  • 1.引论

    操作系统处于中间层,向下管理和控制硬件,向上为外层软件和用户编写的程序提供使用方便、功能强大的服务。就如下面视图所...

  • PMP:1.引论

    全球项目管理业界定义的最重要的价值 观是责任、尊重、公正和诚实(成功准则)。 项目是为创造独特的产品、服务或成果而...

  • 1. 读《国史大纲》--- 引论

    自工作以来一直沉溺技术方面学习,无论是C#,Halcon,Tensorflow还是Python。但是发现效率逐渐变...

  • 项目管理1.引论 课后题

    什么是项目?项目是为创造独特的产品、服务或成果而进行的临时性工作。项目的特点是什么?临时性、独特性、渐进性、明细性...

  • 算法设计与分析——1.算法引论

    1.1 算法与程序 算法性质:(1)输入(2)输出(3)确定性(4)有限性算法与程序的区别:程序是算法用某种程序设...

  • 给大家一些改善 Python 程序的 91 个建议!超级大牛的由

    1.引论 建议1:理解Pythonic概念—-详见Python中的《Python之禅》 建议2:编写Pythoni...

  • 「引论」

    引论 :电影史和做电影史的方法 我们为何关注老电影? - 老电影提供了与我们观看当代电影所获得的同样的洞见。 ...

  • 引论

    调和和 递归简论-递归的基本准则 学习数据结构与算法的一个重要是帮助我们写出高效的程序(在巨大数据集上运行时在合理...

  • 引论

    1.2 一个编译器的结构 1.2.1 词法分析 编译器的第一个步骤称为词法分析或扫描。词法分析器读入组成...

  • 引论

    1、 做产品的难点在哪里深入了解行业 了解用户 争取资源 2、如何赢得技术团队的尊重?对业务和用户要足够的熟悉...

网友评论

      本文标题:1.引论

      本文链接:https://www.haomeiwen.com/subject/wgzdmxtx.html