程序员养成计划-操作系统篇之初识操作系统

Posted 计蒙不吃鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员养成计划-操作系统篇之初识操作系统相关的知识,希望对你有一定的参考价值。

系列文章目录

例如:初识操作系统


文章目录


前言

在初次学习操作系统的时候是在2018年,最近有粉丝投稿问能否出几期关于408的文章,盲猜也是在准备考研。恰好今年计蒙也打算考,就当三刷复习了。可能编写的速度比较忙,还请理解。如有不懂可留言。

一、操作系统的概念

1.系统资源的管理者

提供的功能:处理机管理,存储器管理,文件管理,设备管理
目标:安全,高效
小提:执行一个程序前需要将程序放到内存中,才能被CPU处理

2.向上提供服务(接口等)

封装的思想:将一些简单的硬件功能封装成简单易用的服务,方便用户使用,相对于用户而言,无需关心底层硬件的原理,只需向操作系统发出命令即可。

用户使用

  • GUI:图形化用户接口
  • 联机命令接口:(交互式命令接口)用户说一句,系统做一句。
  • 脱机命令接口:(批处理命令接口)用户说一堆,系统跟着做一堆

软件/程序员用:

  • 程序接口:可以在程序中进行系统调用来使用程序接口,普通用户不能直接使用程序接口,只能通过程序代码间接使用。

3.最接近硬件的一层软件

通常把覆盖了软件的机器称为扩展机器,又称为虚拟机。
需要实现对硬件机器的拓展(让各种硬件能够相互协调配合,实现更多更复杂的功能)

二、特征

并发,共享为两个最基本的特征,二者互为存在条件,没有并发和共享,就谈不上虚拟和异步

并发

两个或者多个事件在同一时间间隔内发生,宏观上同时发生,微观上交替发生。

共享

资源共享,是指系统中的资源可供多个并发执行的进程共同使用

两种资源共享方式

  • 互斥共享方式:一个时间段内只允许一个进程访问该资源
  • 同时共享方式:运行一个时间段内由多个进程同时(宏观上)对它们进行访问

虚拟

进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性(时分复用技术)

异步

把一个物理上的实体变为若干个逻辑上的对应物。前者是实际存在的,后者是用户感受到的(空分复用技术)

三、发展与分类

手工操作阶段

用户独占全机,人机速度矛盾导致资源利用率极低

批处理阶段

- 单道批处理系统
			引入脱机输入/输出技术(用外围机+磁带完成)并由监督程序负责控制作业的输入,输出
			优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升
			缺点:内存中仅能有一道程序运行。CPU有大量时间是在空闲等待I/O完成
- 多道批处理系统
			每次往内存中读入多道程序(操作系统正式诞生,用于支持多道程序并发运行)
			优点:并发执行,共享计算机资源,资源利用率大幅提升,CPU保持忙碌,系统吞吐量增大。
			缺点:用户响应时间长,没有人机交互功能,无法调试程序/无法在程序运行过程中输入一些参数

分时操作系统

计算机以时间片为单位为各个用户/作业服务,各个用户可以通过终端与计算机进行交互
		优点:用户请求可以被即时响应,解决了人机交互问题,可以多用户同时使用一台计算机
		缺点:不能优先处理一些紧急任务

实时操作系统

能够优先响应一些紧急任务,某些任务不需时间片排队
		要在严格的时间限制内处理完事件。主要特点:及时性,可靠性
		细分:
			硬实时系统:必须在绝对严格的时间内完成
			软实时系统:能接受偶尔违反时间规定

网络操作系统

实现网络中各种资源的共享(如文件共享)和各台计算机之间进行通信

分布式操作系统

分布性和并行性,系统中各计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行,协同完成这个任务

个人计算机操作系统

如 windows XP

四、运行机制

程序的运行

CPU执行一条条的机器指令的过程,二进制的机器指令
普通程序员:应用程序
操作系统的开发:内核程序,很多内核程序合在一起称为操作系统内核,简称“内核”(内核是最接近硬件的部分---管理者)

CPU的两种状态

CPU能判断指令的类型,CPU有两种状态"内核态"和"用户态"

内核态(核心态,管态):此时运行的是内核程序,此时可以执行的是特权指令
用户态(目态):运行的是应用程序,只能执行非特权指令
小提:CPU中有个程序状态寄存器(PSW),其中有个二进制位,1表示”内核态“,0表示”用户态“。

内核态和用户态的切换

内–用

执行一条特权指令
修改PSW标志位为”用户态“
操作系统主动让出CPU使用权

用–内

由”中断“引发
硬件自动完成变态的过程
触发中断信号意味着操作系统强夺回CPU使用权
但凡需要操作系统介入的地方都会触发

五、中断与异常

中断

是让操作系统内核夺回CPU使用权的唯一途径,如果没有中断,CPU就会一直执行这个程序.就不需要并发这个概念了

中断的两种类型

  • 内中断
    与执行的指令有关,中断信号来源于CPU内部
    也称:异常,例外
    类型:陷阱,陷入,故障,终止

      		举例:
      			应用想请求操作系统内核的服务,会执行一条特殊的指令--陷入指令(并不是特权指令),此指令会触发一个内部中断信号
    
  • 外中断
    与执行的指令无关,中断信号来源于CPU外部
    也称:中断

      		举例:
      			时钟中断
      				由时钟部件发来的中断信号
      				时钟部件每隔一段时间就会给CPU发一次
      			I/O中断
      				由输入/输出设备发来的中断信号
      					当输入输出任务完成时,向CPU发
      	    	CPU的设定
      			每一条指令执行结束时,CPU都会例行检测是否有外中断信号
    

中断机制的基本原理

不同的中断信号,需要用不同的中断处理程序来处理
大概流程

 1. 当CPU检测到中断信号
 2. 中断信号分类
					内中断:CPU在执行指令时会检测是否有异常
					外中断:每个指令周期末尾,CPU会检查是否有中断信号需要处理

 3. 根据中断信号类型去查询“中断向量表”,	找到相应的中断处理程序

六、系统调用

操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和一些程序接口。其中,程序接口是由一组系统调用组成

系统调用是操作系统提供给应用程序使用的接口,应用程序可以通过系统调用来请求获得操作系统内核的服务。

系统调用和库函数的区别

系统调用比库函数更加底层,且有些库函数不涉及系统调用

按照功能分类

设备管理,文件管理,进程控制,进程通信,内存管理,记忆:凡是与共享资源有关的操作,需保证系统的稳定性和安全性

系统调用的过程

	1.传递系统调用参数
	2.执行陷入指令(用户态),又叫:trap指令,访管指令
	3.执行相应的内请求核程序处理调用(核心态)
	4.返回
  • 注意点
    陷入指令是在用户态执行的,执行后立即引发一个内中断,使CPU进入核心态
    发出系统调用请求是在用户态,对系统调用的相应处理在核心态下进行

七、操作系统的体系结构

  • 内核是操作系统最根本,最核心的部分,实现操作系统的那些内核功能的那些程序就是内核程序
- 必须放在内核中的模块
		时钟管理:实现计时功能
		中断处理:负责实现中断机制
		原语:是一种特殊的程序,处于操作系统的最底层,是最接近硬件的部分,此程序运行具有原子性,只能一气呵成,运行时间较短,调用频繁。
- 不直接涉及硬件的部分:进程,储存器,设备管理等
  所以有些操作系统不将此部分放入内核
  • 由此分为两种内核

大内核

大内核:以上全部包括
			优点:高性能
			缺点:内核代码庞大,结构混乱,难以维护

微内核

微内核:不纳入一些不涉及硬件的部分
		优点:方便维护
		缺点:性能较低
  • 关于两者的CPU改变状态
    改变状态是有成本的,要消耗不少时间,频繁的变态会降低系统性能。相比较而言,微内核较为频繁。

以上是关于程序员养成计划-操作系统篇之初识操作系统的主要内容,如果未能解决你的问题,请参考以下文章

程序员养成计划-操作系统篇之初识操作系统

Python养成计划之Selenium WebDriver基础操作教程

linux进阶篇之linux历史

游戏程序员养成计划

python大佬养成计划----HTML DOM

开发成长之路(12)-- Linux网络服务端编程(通识篇之熟悉操作环境)