【操作系统】第一章:操作系统概念

简介: 【操作系统】第一章:操作系统概念

OS.StudyLog.Ch1.Concepts.概念


学习思路与大纲


c25b8eedc2d56725f4a03df666682cc0_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

OS实验部分将单独记录在一个专栏内,本专栏重点是基础知识扫盲


操作系统实验:


0-准备

1-系统启动和中断

2-物理内存管理

3-虚拟内存管理

4-内核线程管理

5-用户进程管理

6-CPU调度

7-同步与互斥

8-文件系统


操作系统的定义


没有明确定义,但是通过功能可以划分

用户角度(对上):控制软件==>管理app,为app提供服务,杀死app


内部管理(对下):资源管理==>管理外设,分配资源

564da49873406b736dc51be67138b3e2_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

CPU抽象成进程 硬盘抽象成文件 内存抽象成地址空间


操作系统架层次结构:硬件之上,应用程序之下

层次由高到低:程序-软件-OS-硬件,如图。

6d0a6dd26c00d9eaba86199f57e11c0f_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png


Shell&Kernel概念的引入


GUI图形化标识:是属于Shell外壳部分。字符命令也是shell部分,这两个接口部分是操作系统对外提供的一种可见的服务。我们研究的OS更注重内部kernel部分(随着以后的学习会进一步解析,此处先引入这个概念,需要一定CSA基础)


16dfef976da429544c4f2ce956c1c6bf_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png


关注操作系统的细节,OS内部细化


硬件资源:CPU、内存、磁盘(最主要)、网卡声卡显卡……

==>CPU管理:CPU调度,进程线程管理

==>内存管理:物理内存管理,虚拟内存管理(给上层应用提供相对独立,尽可能大的一块内存空间去使用,在有限的物理内存基础上独立虚拟出一个更方便安全的环境)

==>Disk:磁盘块作为读写单位,不方便存储数据。OS将他抽象成文件系统,以文件的形式给数据提供访问、保存等操作。

==>底层相关-硬件直接打交道:中断处理和设备驱动

OS中很重要的功能单元,基于中断才能真正完成应用程序的各种命令。


OS Kernel特征(4个特点)


△并发:一段时间内有多个程序运行

同时跑多个程序,需要OS管理和调度,ex)哪个先执行

并行:在一个时间点有多个程序运行,一般计算机内要有的多个CPU才能实现


△共享:OS为了有效地让资源共享给需要资源的应用程序。分为互斥共享和同时共享。

同时共享:表面上是同时访问,但是OS内部变为互斥访问或者分时访问。在时间点上只有一个程序可以访问一个资源。这与资源的粒度有关。

※如果CPU隔离为两块,则可以令两个程序同时访问两个资源,根据资源特征区分如何共享。


△虚拟:把硬件虚拟化(Ex,CPU虚化为进程)后,利用多道程序设计,让每个用户感到有一个计算机专门为他们服务。


△异步:程序的执行往往不是一贯到底,各种走停,向前推进的速度不可预知。但只要运行环境(没有硬件损坏问题或病毒木马等)相同,OS需要保证程序运行结果也要不变。


操作系统的重要性


结合了许多课程:DA,Algorithm,CSA, Language etc.

a0d40135787d76be22a406a1c1827fc0_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

甚至包括了材料、技能、概念和原理、代码。顶级会议相当于交替举行一年一届。

9da8f40f3652db49b71d9f1afa7f2eaa_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png


OS的基本要求


OS代码必须是高效的。低耗CPU、内存(Memory)、磁盘(disk)。

操作系统的代码管理原始硬件:时间依赖行为,非法行为,硬件故障等。因此操作系统实现上会比较复杂。

操作系统需要权衡:空间与时间、性能与可预测性、公平和性能。

我们希望OS性能尽量高,希望程序的执行尽量可以预测(什么时候开始、结束、切入)。尽量令整个系统的资源能够更公平、高效的使用。

能够管理我们的硬件:

719860134664ef9214410fbec2dfe003_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png


操作系统的结构:MS-DOS(最早的OS)


9aecc96c08a6b910166d61461fd5dfd0_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png


不分模块的OS,受制于硬件。容易被攻击且很难扩张,受制于CPU,硬件限制非常大。

9e0b6799337f9a69b0ecd8e80be3cf46_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png


分模块如图示(unix初代)


通过模块化概念,提供更加有效的系统软件的设计实现。当时用C语言实现,与汇编语言有很大的区别。汇编语言与机器绑定所以不具有可移植性。但是C有很好的移植性,所以让应用很好的扩展到不同的计算机系统里去。


微内核&外核


0336dc1c429345ebb92ec169eac7982c_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

各模块之间用函数调用实现(单体)【一般架构】


微内核:学术界将内核变得尽量小,使得不同功能让更外层的模块存在,模块之前不用函数,而用消息传递来实现。内核放基本功能(中断处理、消息传递)【文件系统内存管理、网络协议栈放在外围,用进程、程序、系统服务形式存在。服务之间通过内核消息传递机制进行通讯】,是一种松耦合架构。这种方式非常灵活、安全。但是性能低,产业界很少采用微内核技术,主要是因为性能问题

c119beb4c47b27e1409de54720b7adfa_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

外核架构:内核分为两块,一块负责硬件功能的复制(和硬件打交道);另一块称为lib OS,和具体应用打交道。

Ex)浏览器访问面向browser的LIB OS,然后lib OS访问外核、再访问硬件。针对不同应用程序,对应的lib OS访问外核从而访问硬件。(应用和OS成为紧耦合架构)

APP==>不同的lib os==>ex kernel(外核)==>对硬件的管理和访问

不同的lib os可以并发访问外核且安全有效地使用硬件资源。

优点:速度快


VMM:虚拟机监控器


6bccbd32ea2d320db948b3c329b5b906_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

虚拟出多个计算机系统,给上层操作系统使用。一台计算机可以变成多台计算机。VMM虚拟出的计算机连外设都有,所以OS感知不到虚拟机,会把他当成真实的物理机。OS之下,硬件之上。

9820a2359b614301630c1ced39cdab27_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

CPU计算能力越来越强,甚至一台计算机可以有多个CPU。因此硬件资源过剩的情况经常发生(一般应用用不完这些资源)。所以设计初衷就是一台计算机同时给多个人服务,充分发挥计算机资源的效率。


拓展:历史


CPU高速发展,速度提升但是性能未得到充分利用。


批处理阶段:


3e08e1b303cbbf30e40b7a393b71bcd9_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

OS并发特征的雏形(具体内容请参考CSA流水线章节)


CPU重用


a84d74b6029e673174aa486442774d4a_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

多道程序设计:提高CPU利用率

1e3d87771f3341e1b6bc6d51525f684e_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

程序1指定read这个IO操作时,OS完成切换,让程序2占用CPU去执行,此时程序1在等待外设把需要的数据读进来。

程序2执行过程中,如果程序1提出的read外设已经完成,那么会产生一个中断,通知OS,OS可以再切换,令程序2暂停,先让程序1执行。

※中断的概念下一章详解。

多道程序设计确实提高了CPU利用效率,但是交互性不够好。为了更好的交互,提出分分时调度的思路。

68564c195461b38fc9c56444fad11bda_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png


时钟定期产生中断,在很小的时间间隔内(人感觉不出差距)操作系统不断切换,令程序1执行一个时间段后程序再执行一个时间段,不断轮换。

ex)千分之一秒一次分时,控制权不断轮流切换给程序1、2。人感觉起来相当于两个人同时占用这个计算机在操作,让人感觉不到。


个人电脑


硬件价格下降很快,使用的应用越来越广泛,从早期的单纯计算到多媒体……

应用的需求也发生变化,OS也就随之变化。现在操作系统的更需要安全与交互性的提高。

集成电路发展越来越强大,一个CPU可以继承多个CPU核,网络也同时飞速发展。使得很多工作不需要放在本机来操作,丢到数据中心即可。==>分布式操作系统

4be324dd3612e9f16b500bdf47dbf051_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoYWhvdA==,size_16,color_FFFFFF,t_70.png

前端(一般用户)使用,计算和存储工作由数据中心完成,中间由Internet完成。

通过网络,形成一个松耦合的交互,使得更加及时有效

数据中心中,一个紧耦合的系统,如何让这个系统更好的完成计算的功能(集体地)。需要OS更好的管理协调工作。

当前正在不停的发展和演化中,随着云计算的深入。未来的发展趋势将从一个计算机为一群人服务变成一群计算机为一个人服务的形式。(物联网相关知识)


目录
相关文章
|
6月前
|
存储 消息中间件 中间件
DP读书:《openEuler操作系统》(一)操作系统基本概念
DP读书:《openEuler操作系统》(一)操作系统基本概念
106 2
|
6月前
|
消息中间件 存储 算法
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
180 0
|
18天前
|
安全 算法 Unix
深入浅出操作系统:从基础概念到实践应用
【10月更文挑战第22天】本文旨在以浅显易懂的语言,为读者揭开操作系统的神秘面纱。我们将从操作系统的基本概念出发,逐步深入其核心功能与设计哲学,并通过具体代码示例,展示操作系统如何在实际中发挥作用。无论你是计算机科学的学生,还是对技术有浓厚兴趣的爱好者,这篇文章都将为你提供一次轻松愉快的操作系统之旅。
30 4
|
1月前
|
Ubuntu Java Linux
Linux操作系统——概念扫盲I
Linux操作系统——概念扫盲I
42 4
|
2月前
|
存储 算法 安全
深入理解操作系统:从基础概念到代码实践
【9月更文挑战第23天】本文将带领读者深入探索操作系统的奥秘,从基础概念出发,逐步揭示操作系统的工作原理和设计哲学。我们将通过实际代码示例,展示操作系统如何与硬件交互、管理资源以及提供用户界面。无论你是计算机专业的学生还是对操作系统感兴趣的开发者,这篇文章都将为你打开一扇通往操作系统世界的大门。
67 16
|
6月前
|
存储 缓存 Linux
【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解
【Linux】进程概念(冯诺依曼体系结构、操作系统、进程)-- 详解
|
4月前
|
人工智能 Unix 物联网
深入理解操作系统:从概念到实践
【7月更文挑战第31天】本文将带领读者深入探索操作系统的世界,从基本概念、发展历程、核心组件,到实际应用场景和未来趋势。我们将揭示操作系统如何作为软件与硬件之间的桥梁,以及它如何影响计算机系统的性能和用户体验。通过本文,您将获得对操作系统设计哲学的深刻理解,并掌握评估不同操作系统特性的能力。
74 7
|
4月前
|
算法 安全 Linux
深入理解操作系统:从基础概念到现代发展
【7月更文挑战第25天】在数字时代的心脏,操作系统(OS)扮演着至关重要的角色。本文将深入探讨操作系统的核心功能、设计哲学以及它们如何适应不断变化的技术需求。我们将从早期的批处理系统和多道程序设计开始,逐步走向现代的多任务、多用户操作系统,并探索它们是如何管理资源、提供安全性和促进用户交互的。文章还将触及开源与专有操作系统之间的辩论,并预测未来可能的发展方向。
|
4月前
|
存储 安全 物联网
深入理解操作系统:从基础概念到现代挑战
【7月更文挑战第14天】本文将探索操作系统的核心概念,并分析其在现代计算环境中面临的挑战。我们将从操作系统的定义和功能出发,逐步深入到进程管理、内存管理、文件系统以及并发和同步等关键领域。文章还将讨论操作系统在云计算、物联网(IoT)和安全性方面的新挑战,为读者提供对操作系统复杂性的全面理解和未来发展方向的洞见。
60 1
|
5月前
|
存储 Unix Linux
深入理解操作系统:从概念到实践
【6月更文挑战第29天】本文将带领读者深入探索操作系统的奥秘,从其基本概念到实际应用。我们将一窥操作系统如何管理计算机硬件资源,提供用户接口,以及实现文件系统和网络通信等功能。文章不仅解读了操作系统的核心原理,还通过具体案例展示了这些原理在现代计算环境中的应用。无论你是软件开发者、系统管理员还是对计算机科学感兴趣的学生,这篇文章都将为你提供宝贵的知识和洞见。

热门文章

最新文章