浅谈操作系统

目录

 

冯诺依曼体系结构

输入设备和输出设备

处理器

存储器

进程和程序

操作系统 

1. 操作系统是什么?

2. 操作系统的管理机制

3. 进程管理

并发 vs 并行

用户态 vs 内核态


冯诺依曼体系结构

在了解操作系统前,我们要明白计算机的体系结构---冯诺依曼体系结构。

任何计算机都是由这四部分组成的: 输入设备(Input)、存储器(Storage)、处理器(Processor)、输出设备(Output)组成。并且体系结构规定:处理器只能和内存打交道。也就是说嗷,输入设备输入的数据要通过内存才能到达CPU进行处理,CPU处理完的数据只能通过内存到达输出设备进行输出。那么输入设备和输出设备使我们最常见的:

输入设备和输出设备

— 输入设备:从外界世界获取信息(物理形态)转换为计算机电子信息(二进制数据)
                              鼠标、键盘、麦克风、摄像头...

— 输出设备: 把电子信息(二进制数据)转换为外部世界的信息(物理形态)
                              屏幕、音响、振动器...

还有两个特殊的设备,他们既是输入设备又是输出设备:硬盘和网卡。

处理器

处理器主要是CPU,CPU又分为运算器和控制器。

上面的图可以描述CPU的工作机制为:硬盘或其他输入设备中的数据经过 内存 进行读取,读入内存中的数据 经过CPU进行处理。CPU分为运算器和控制器,运算器是负责“干活的”,而程序计数器存放着下一条要执行的指令,相当于控制器控制运算器该干什么活。当然这里没有深究缓存的作用,缓存用来临时性减少访问内存的次数,达到提升访问速度的作用。

存储器

存储器主要说的就是内存。要注意:寄存器实际是cpu真正意义上打交道的存储。所有数据必须先到寄存器,cpu才能读到;cpu处理的所有结果,必须先写入寄存器,进而才能写入内存。

进程和程序

我们一直在用idea写代码,关于代码如何通过编译器运行起来的,又如何从硬件的角度开始工作的。在了解这些之前,我们必须要明白程序和进程的区别。

程序是提前写好的一段操作指令,进程代表的是一次过程,体现的是其动态特性。

怎样理解呢?我们在写成一段程序,它的输入是一个问题,输出是一份源码,依赖的是idea这个工具;在编译阶段,输入的是我们所写的源码,输出的是字节码文件;当程序利用cpu运行起来的时候,输入的是字节码文件,输入的状态不定,也就是说由程序本身决定的,依赖idea或者程序也可以独立运行。在这其中,我们要明白:平时的 .java/.class 称为程序都可以,但一旦开始运行了,就不能称之为程序了而应该使用进程这个术语。

理解完程序和进程的区别,用一副图大概描述我们所写的程序如何在硬件的层面上跑起来的。

操作系统 

1. 操作系统是什么?

操作系统(OS)是一个搞管理的软件。

那么 它既然是一个高管理的软件,为什么要用它搞管理呢? 像我学过的51单片机等等就没有操作系统可以正常运行,那么为什么需要操作系统进行管理呢?我觉得分为两个大方面的原因:

          1. 现在的计算机运行场景非常多,硬件多,事情复杂。
          2. 让每个用户直接去操作硬件显然是不可行的。

因此必须引入一套专门的软件进行管理,来管理提供给用户操纵计算机的一套系统,称之为操作系统(OS)。

2. 操作系统的管理机制

操作系统可以管理进程、内存、文件、网络、驱动。以进程管理为例:操作系统会把进程看做一个对象进行管理。管理的核心是先描述再组织。会有一个类,每个对象都是一个进程对象,再用数据结构(List、Map...)进行组织。

用一个伪代码进行描述:

class PCB {

pid; //唯一标识一个进程
名字、程序路径、代码、数据; //每个进程必然对应一个程序,描述程序信息

运行时间、cpu占有率、内存占用; // 统计信息

调度信息

}

3. 进程管理

1. 定义

操作系统系统通过不断切换进程,实现分配CPU资源到进程的管理。

2. 进程切换发生时机

发生的时机主要有5个:

         1. 被高优先级进程抢占
         2. 执行结束
         3. 等待外部IO
         4. 主动放弃
         5. 时间片耗尽

时间片耗尽,其实是进程同时运行的假象。分配给每个进程适合的时间片,实现进程的切换,由于速度非常快,造成我们看起来是同时进行的。

3. 进程切换

进程切换做到的方式:保护老进程切上下文信息,恢复新进程切换上下文信息。CPU有个控制器,控制器有一个程序计数器(pc)存放运算器下一个要执行指令的内存地址。通过改变pc的值记录进程相关信息就可以实现进程的切换。

并发 vs 并行

并发(假同时):单CPU 单核 多进程

并行(真同时):多CPU 多核 多进程

用户态 vs 内核态

当CPU正在运行用户代码的时候就是用户态

当CPU正在运行操作系统代码的时候就是内核态

显然,内核态的代码权限更高。

操纵系统很比较复杂的,我只进行浅显的了解介绍,后续继续学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值