初识操作系统与进程

初识操作系统与进程

  • 初识操作系统
    • 进程的粗略了解
      • 对linux下的PCB"task_struct"结构体中描述的内容分类粗略解读

初识操作系统

提到操作系统就不得不提起冯诺依曼体系结构,因为现在我们经常使用的电脑,笔记本都是遵循冯诺依曼体系结构的。

那么冯诺依曼体系结构都包括哪几方面呢?
冯诺依曼体系结构分为输入设备、输出设备、内存、CPU,其中内存也就是存储器,CPU包括运算器和控制器。
初识操作系统与进程_第1张图片

是不是听到这几个名词都特别的生疏,其实我们在日常生活中会用到很多,比如输入设备有: 键盘 , 网卡 , 硬盘 , 话筒 , 摄像头等。
输出设备有: 显示器,音响, 网卡,硬盘等。

站在硬件的角度和数据的层面上,CPU只和内存打交道,外设也只和内存打交道,所以当数据需要处理的时候必须要先预装到内存中,这样可以通过局部性原理(因为一般代码的前后大概率都是下一步要访问的代码,所以我们就将我们要用的代码的附近的代码都与预装到内存中,这样就可以更方便的找到下一个要访问的代码),来提升效率。

说了这么多的冯诺依曼体系结构,那么什么是操作系统呢?
操作系统是一款软硬件资源管理的计算机程序,也就是软件。
操作系统虽然是一个管理软硬件的计算机程序,但是操作系统不是直接对硬件进行管理的,而是通过另一种软件与硬件进行间接管理的,这个软件就是驱动。
驱动:就是直接和硬件打交道的软件,让操作系统与硬件进行解耦。

那么操作系统的任务是什么??
操作系统的任务分为四大类,分别是:

  1. 进程管理
  2. 文件管理
  3. 驱动管理
  4. 内存管理

操作系统的目的:

  1. 与硬件交互,管理所有的软硬件资源。
  2. 为用户程序(应用程序)提供一个良好的运行环境。

操作系统和用户层之间也不是直接调用的,而是在操作系统和用户层之间会封装很多的接口,这些接口都被称为系统调用接口,这样是为了保证操作系统的安全性。(这里提到的系统调用接口也可以理解成类似C语言中的函数调用,所以多个函数调用就可以被封装成库)

总结:
操作系统对下可以管理好软硬件资源,对上可以为用户提供好服务。

进程的粗略了解

上面我们提到,操作系统其实就是对软硬件资源进行管理的管理者,那么作为管理者的操作系统做出了决策,那么谁是被管理者呢?这个被管理者就是进程,进程其实就是运行起来的程序,也是操作系统动态执行的基本单元。而所谓的管理就是要先描述,再组织(六字真言)也就是说操作系统做的管理工作就是先描述,再组织,并且描述和组织都是操作系统自己做的。

那么在操作系统中我们的操作系统用什么来描述进程呢?
答: PCB也就是进程控制块,用来描述进程。

所以以后如果有人要问为什么要存在PCB呢,我们就可以这么回答,因为操作系统要对软硬件进行管理,要管理就要先对器进行描述,而PCB也就是进程控制块就是用来描述进程的。

这里还有一个问题,上面我们说到进程其实就是运行起来的程序,那么进程是否就是等于程序本身呢??
答案当然是否定的,进程是包括程序的,因为操作系统要在可执行程序的基础上加上一些内核数据结构来完善他,这里你可以把可执行程序当作一个蓝图,而进程就是一个建筑好的摩天大楼,在两者中间需要很多的原材料才能使蓝图变成现实的楼房。

上面我们说到当操作系统想要对当前进程进行管理的时候就必须先创建进程控制块来描述进程,所以我们可以理解为,如果你想要创建一个进程,首先要做的就是创建一个用来描述当前进程的进程控制块,在linux操作系统下,描述进程的PCB是task_struct。

在描述进程时我们不是随心来描述的,不是想到什么就描述什么,而是按照进程的这几个属性来进行描述的,下面我们就详细的了解以下进程被描述的者几个属性。

对linux下的PCB"task_struct"结构体中描述的内容分类粗略解读

  1. 进程标识符(PID)
    linux系统通过pid号来标识进程,所以我们就可以得到两个函数分别是
    pid_t getpid() 此函数是用来获取自己进程的pid的
    pid_t getppid()此函数是用来获取自己的父进程pid的
    如下图:myproc这个进程的pid就是1798,其父进程的pid就是16427
    初识操作系统与进程_第2张图片

  2. 优先级
    什么是优先级??-> 优先级就是对谁先拿到某种资源的判定的数据化描述
    为什么要有优先级?? -> 因为资源有限,进程是可以有多个的,为了更好的管理资源的控制,所以要进行优先级设置。
    如何理解进程排队?? -> 其实本质上就是进程的PCB的结构体的排队(也就是PCB的排队)。

  3. 时间片
    每个运行的进程都是有自己的时间片的,也就是每个进程都不是一直运行的,到了时间片的运行时间就会被退出运行,每个进程都是基于时间片的轮转进行运行的。

  4. 上下文信息

  5. 连接信息

你可能感兴趣的:(it,linux)