操作系统系列(一)——操作系统概述

本期主题:
操作系统概述


操作系统概述

  • 1.系统的硬件组成:
    • 1.1 CPU:
    • 1.2 主存:
    • 1.3 磁盘:
  • 2.系统的软件组成:
    • 2.1 CPU而言——处理器管理
    • 2.2 内存的管理,这是个大话题
    • 2.3 I/O设备的管理
      • 1.进程:
      • 2.虚拟内存
      • 3.文件
  • 3.Linux的内核
    • 1.进程调度(SCHED)
    • 2.内存管理(MM)
    • 3.虚拟文件系统(VFS)
    • 4.网络接口(NET)
    • 5.进程间通信(IPC)

1.系统的硬件组成:

包括 CPU、IO桥、主存储器、磁盘控制器

1.1 CPU:

中央处理单元,解释存储在主存中的指令;包括了PC、寄存器文件、ALU,PC指程序计数器,寄存器文件存储了一些数据,ALU指算术、逻辑单元;

1.2 主存:

主存是一个临时存储设备,DRAM;

1.3 磁盘:

2.系统的软件组成:

整个计算机的软件体系结构体如下图所示:
操作系统系列(一)——操作系统概述_第1张图片

对上图的解读:
由上图可以看出,系统内核处于hardware和runtime library之间,runtime Library指的是程序运行时的库,这种库能够往上给应用程序提供API
因此,操作系统应该做的事情至少包括了对下面的Hardware的管理
对于一个计算机而言,硬件资源主要就是CPU、存储器(包括内存、磁盘)以及I/O设备,所以从这三个方面看操作系统是怎么在管理这些东西的;

2.1 CPU而言——处理器管理

主要是需要提高CPU的利用率,假设CPU在运行一个程序,但是这个程序是对磁盘的读写,CPU在这个时候完全空闲了下来,这对CPU的利用率而言绝对是种浪费,因此操作系统的人就利用了进程的方式来提高CPU的利用率,每个程序都有自己单独的进程,并且进程有一个优先级的比较,CPU根据进程的优先级来进行调度切换,所以看起来像是在一个时刻运行了多个任务;

处理器管理是操作系统的重要组成部分,负责管理、调度和分派计算机系统的重要资源处理器,并控制程序执行,由于它是操作系统中最核心的部分,无论是应用程序,还是系统程序,最终都要在处理器上执行,以实现其功能,因此,它的优劣直接影响系统的性能。程序以进程形式来占用处理器和系统资源,处理器管理中最重要的是处理器调度,即进程调度,也就是控制、协调进程对处理器的竞争。

进程可被调度在一个处理器上交替执行,或在多个处理器上并行执行,不同类型的操作系统可能采用不同调度策略,交替和并行执行都是并发的类型。为了提高并发粒度和降低并发开销,现代操作系统又引进线程概念,此时进程仍然作为资源分配和管理单位,线程则成为处理器调度的基本单位。本章在简要介绍处理器的硬件运行环境后,首先着重介绍计算机系统的中断机制,然后详细论述进程和线程的基本概念及其实现,最后全面讨论各个层次的处理器调度方法。 本章将讲述:处理器与寄存器、指令与处理器模式、中断、中断源、中断系统、多中断的响应与处理、进程及其状态、进程的数据描述、进程的管理、进程切换与模式切换、多线程技术概述、KLT与ULT、多线程实现的混合策略、处理器调度的层次、处理器调度算法。

2.2 内存的管理,这是个大话题

程序只有装载在内存中才能去真正的运行,所以就有这么一个问题,计算机有限的物理内存如何给这么多程序去跑呢?
假设这么一个场景,计算机的实际物理内存为200M,程序A需要适应50M,程序B需要使用100M,最简单的分配方式就是直接分配,给A50M,给B100M,这个时候又来了一个程序C,需要200M,那在这种情况下,只能把原来的A和B的数据程序存到磁盘中,再跑C,这样就至少会存在这么几个问题:
(1)效率太低了,涉及不停的内存的切换来切换去;
(2)对整个操作系统而言有风险,假如A程序有个bug,因为直接在跑的是物理地址,这样的话A程序就有可能不小心改动了某个物理地址的值,可能会导致运行在其他物理地址的其他程序出问题,这样很不合理;
因此添加中间层,这一层就是虚拟地址,然后虚拟地址通过某种映射的方式能够转成物理地址,通过虚拟内存能解决上述的第二个问题,但是效率问题还是没有解决,因此提出了分页(page)的概念
提出分页想法的前提是程序的局部性原理,就是说每个程序其实在运行的时候,某个时间段内只是频繁的在用某一小段程序;
因此分页的意思就是将进程的虚拟内存进行分页,然后需要经常使用的就会装载在内存中,而不需要经常使用的,就先放在磁盘里,等需要的时候再去取就可以了
操作系统系列(一)——操作系统概述_第2张图片

2.3 I/O设备的管理

其实这个意思就是操作系统会去对驱动进行管理,所以对于写应用层的人来说,不用去关心底下的硬件是如何在跑的

操作系统内核是应用程序和硬件之间的媒介,提供了几个基本的抽象:

1.进程:

操作系统对一个正在运行的程序的一种抽象
操作系统系列(一)——操作系统概述_第3张图片

2.虚拟内存

操作系统为每一个进程提供了一个假象,像是完全自己在独占一段地址空间
操作系统系列(一)——操作系统概述_第4张图片

linux管理进程空间布局,以32位的系统为例:
高地址1GB空间分配给内核空间,剩下的空间为userspace
操作系统系列(一)——操作系统概述_第5张图片

3.文件

UNIX I/O 参考如下这些文章
unix环境之文件IO
unix环境之标准IO

3.Linux的内核

Linux的内核所示,主要由5个部分构成:
操作系统系列(一)——操作系统概述_第6张图片

1.进程调度(SCHED)

进程调度控制系统中的多个进程对CPU进行访问,使得多个进程能够 “微观串行,宏观并行” 的执行。
讲解Linux的进程调度会涉及到进程的状态机的变化:
操作系统系列(一)——操作系统概述_第7张图片
1.首先创建完进程之后会进入就绪态,等待进程调度的发生
2.进程调度发生之后,此时CPU处于运行态,当进程所需资源,未被申请到时,驱动一般会调度其他进程运行使本进程进入休眠模式
休眠模式具体有两种:
(1)一种是可以被信号唤醒的睡眠
(2)另一种不能被信号唤醒的睡眠
第一种只能被资源到位给唤醒,第二种可以被信号所唤醒,信号可以参考这篇文章UNIX系统信号

2.内存管理(MM)

内存管理的主要作用是控制多个进程安全的共享主内存区域,Linux内存管理对每个进程完成从虚拟地址到物理内存的转换。
以32位的处理器为例,每个linux进程享有4G的内存空间,其中0 ~ 3G属于用户空间,剩下的3 ~ 4G属于内核空间。
操作系统系列(一)——操作系统概述_第8张图片

3.虚拟文件系统(VFS)

Linux虚拟文件系统隐藏了硬件的具体细节,为所有设备提供了统一的接口,对各种文件系统的一个抽象,上层的应用程序提供了统一的vfs_read()、vfs_write()等接口。
操作系统系列(一)——操作系统概述_第9张图片

4.网络接口(NET)

网络编程参考这一篇文章 linux网络编程(一)——socket通信

5.进程间通信(IPC)

进程间通信包括信号量、共享内存、消息队列、管道、UNIX域套接字等,可以参考下unix环境高级编程——进程间通信之管道以及unix高级环境编程——线程详解的信号量部分

你可能感兴趣的:(计算机操作系统,1024程序员节,操作系统,内核)