操作系统学习笔记(一)

操作系统预备知识

  • 计算机结构原理
  • 数据结构
  • C和汇编语言

为什么要学习操作系统?

  • 综合课程-结合许多不同的课程
    • 程序设计语言
    • 数据结构
    • 算法
    • 计算机体系结构
    • 操作系统概念和原理,源代码
    • 技能
    • 操作系统的设计和实现
  • 操作系统还在不停的发展、在工控等各种领域有强烈的需求!
  • 操作系统很cool、很有用、有挑战性!
  • 操作系统是计算机科学研究的基石之一!
  • 在工业界:微软、谷歌、Facebook、苹果等都以OS为核心
  • 在学术界:ACM,IEEE,USENIX,CFF等组织都在着手OS的研究

如何让我更好的学习操作系统?

这是我对自己说的话……读者大可跳过

我听到的我会忘记,我看到的我能记主,只有我做过的我才能理解!


什么是操作系统?

  • 操作系统是一个控制软件
  • 管理应用程序
  • 为应用程序提供服务(例如:IO服务、声卡、网卡服务等等)
  • 杀死应用程序
  • 资源管理(合理分配计算机的各种资源)
  • 管理外设、分配资源(公平分配,保证计算机效率的提供)
用户角度层面

我们看到是一个图形界面,方便程序展现给用户,方便用户的使用,例如:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PN3Bn1pv-1572624965787)(https://img.vim-cn.com/7c/549a5f2f33aa20bd1ee14b341e8c539c3248cd.jpg)]

内部层面

CPU抽象成进程,把硬盘抽象成文件,把内存抽象成地址空间,如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EkgsWiCP-1572624965788)(https://img.vim-cn.com/06/a5be02bbf7ffa9e4c55e4a1e8741a80cc906d8.png)]

操作系统架层次结构

硬件之上,应用程序之下

Linux、Windows、Android的界面属于外核(Shell),而不是内核(kernel),操作系统原理主要学习kernel,在Shell之下。我们关注的是内核中完成的各种功能,站在操作系统的内核的角度去看问题。

Kernel-操作系统内部组件,包括:

  • CPU调度器
  • 物理内存管理
  • 虚拟内存管理
  • 文件系统管理
  • 中断处理与设备驱动
OS Kernel的特征
  • 并发:计算机系统中同时存在多个运行的程序,需要OS管理和调度(不是同一时刻);而并行指的是一个时间点上有多个程序同时执行。要理解并发并行的区别
  • 共享:“同时”访问;互斥共享(当一个进程正在使用这个资源,另一个进程必须等待,直到第一个进程释放)
  • 虚拟:利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务
  • 异步:程序的执行不是一贯到底,而是走走停停的,向前推进的速度是不可预知的;但只要运行环境相同,OS需要保证程序运行的结果也要相同

操作系统的主要功能

处理器管理

是指对CPU的管理,是对CPU进行分配,并对他的运行进行有效控制与管理;为了提高程序利用率,很多计算机操作系统采用了多道程序技术(并发执行->进程(正在执行的程序通过进程管理协调多道程序之间的关系))使得计算机资源得到充分的利用。

存储管理

是指对内存空间的管理,程序要运行就必须由外存装入内存,存储管理的作用就是为每个程序合理分配空间,让他们互不干扰。

设备管理

是指计算机中所有输入输出设备的管理,提供驱动程序,用户不需要了解接口等细节,可以直接方便使用;另外一个任务,使外部设备尽可能与CPU并行工作,提高设备的使用效率。

文件管理

软件资源,程序和数据以文件的形式存放在外存上,需要的时候再载入内存。有效的组织存储和保护文件,使用户方便安全的访问他们。

用户接口

命令、图形、系统调用的形式。方便的使用操作系统各个功能

网络与通信管理

网络资源管理、数据通信管理、网络管理(性能、安全等等内容)


操作系统的逻辑结构和运行模型

用户态和内核态的划分
  • 内核态:操作系统运行的状态,可以执行计算机的所有指令,能够使用计算机的所有资源
  • 用户态:能够访问指令和资源会受到一定的限制

我们将内核态用户态的区别,如下图所示:

内核态用户态
访问的资源多,可靠性、安全性要求高,维护管理比较复杂访问资源有限,可靠性、安全性要求低,编程和维护比较简单

还有一张图片比较有代表性:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zyOTO0hl-1572624965793)(https://i.loli.net/2019/11/01/ZHiFpblWn2NDTYy.jpg)]

操作系统的逻辑结构
单内核结构

操作系统一方面对外提供服务,在内部还有各个功能模块,模块之间相互调用,构成了比较复杂的关系。

优点:结构紧密,模块间可以方便的进行组合,满足不同的需要,灵活性较高、效率高
缺点:对功能模块的划分不能精确的确定,模块独立性差;如果模块之间调用关系可能过于复杂,进而导致系统结构不够清晰,正确性、可靠性不能保证;系统维护比较困难

如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KFrJGcBB-1572624965795)(https://i.loli.net/2019/11/01/L2Y1M8zQVROZqGr.jpg)]

分层式结构

为了避免单内核结构模块之间比较复杂的关系,分层式结构直接将各个功能划分成模块,这些模块按照功能调用次序分成若干层,每个层次为上面的层次提供服务。

优点:按单向调用关系以层单位,组织各个模块,模块之间的依赖、调用关系清晰明了;对其中的一个分层进行修改,不会影响道其他层次;系统的调式变的容易;系统的正确性得到保证,系统中间的接口减少。
缺点:单向依赖的关系之间,在实现通信的时候,系统开销会比较大,进而影响系统效率。

如下图所示:
7LYP_Q2T_WUGMJD_R@FVL_9.jpg

微内核结构

前面的两种结构所有的工作核心都在内核态,在由内核态转换为用户态的时候会有时间开销,效率下降;在微内核结构里面,操作系统划分了两部分。一部分是在内核态的微内核,它提供了最基本的功能,只完成极少数的内核态任务;还有一部分是一种服务器进程,它们工作在用户态,以用户服务器的形式进行工作。

优点:对进程的请求提供了一次性的接口,不区分内核级服务用户级服务,所有服务采用消息传递机制服务;具有较好的易修改性;可移植性比较好;对分布式操作系统提供较好支持。

如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ahKnv80z-1572624965809)(https://i.loli.net/2019/11/02/NMjGV7wWDLCRPol.jpg)]

操作系统的运行模型
独立运行的内核模型

有自己的独立操作空间和独立的运行环境,他的执行过程不和应用程序或者进程发生关联。并发程度不够高

嵌入到用户进程中执行的模型

为了提高并发能力,创建用户进程的时候,为其创建核心站,可以把操作系统的内核程序嵌入到其中去执行。

作为独立进程运行的模型

整个操作系统小部分核心功能仍然在内核态工作,大部分功能在用户态工作,独立的服务器进程提供服务。微内核结构就属于这种模型

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值