Linux操作系统 , 进程基础, 了解PCB

操作系统 

什么是操作系统?
一台电脑所拥有的资源分为: 硬件资源和软件资源.

  • 硬件资源: CPU, 显示器, 硬盘 .....
  • 软件资源: 微信, QQ, 浏览器 ....

一台电脑所拥有的资源是有限的, 我们怎么管理分配这些资源. 让我们直接去管理硬件, 非常的难.
此时操作系统就出现了, 操作系统通过抽象将复杂的硬件细节隐藏起来, 给我们提供更为简单的接口(硬件管理). 操作系统通过调度算法决定哪个进程在什么时候使用 CPU, 使用多久 (管理软件).

操作系统是一个统称, 能够完成软硬件资源管理的程序都可以被称为操作系统.
Linux系统 就是操作系统的一个具体实现.

什么是进程

进程就是运行起来的程序.
程序又是什么, 我们写了一个 test.cpp 文件, 当我们编译之后会得到一个 .exe 文件, 这个文件就可以被称为程序.

在我们运行这个程序之前, 这个程序是不会起作用的, 它就是一个文件, 是静态的.
当我们将这个程序运行起来之后, 它就会有各种各样的功能提供给我们, 此时这个程序就被赋予了动态的属性, 此时它也就可以被称为是一个进程.

进程和程序对比

  • 程序: 程序是静态的, 是一组指令和数据的集合, 存储在磁盘或其他存储介质上.
  • 进程: 进程是程序的执行实例, 是动态的. 会被操作系统分配内存, 资源用以运行.

PCB (process control block)

PCB 全称为: 进程控制块.

上面我们知道了, 进程是动态运行的程序, 会被操作系统分配内存, 资源等.
那么操作系统怎么去管理进程?

举个例子: 
我是一个学生, 学生都是由校长管的, 但是校长可能根本没有见过我.
那么校长都不认识我,怎么去管理我? 
虽然校长不认识我, 但是, 他可以通过一些信息来了解我.
比如: 我的名字, 学号, 成绩, 宿舍, 有没有逃课等信息来了解我. 这些信息被保存起来.
校长通过这些信息, 从而做出对应的管理措施. 我逃课了, 校长就通知我的班主任来抓我 ...

那么操作系统也是一样, 操作系统只需要获得它想要的关于进程的信息, 就可以做出对应的管理措施. 那么这些信息要被操作系统看到, 那么就也需要被保存在起来, 方便操作系统查找.

PCB (进程控制块) 就是用来存储这些信息的.

// 伪代码
struct PCB
{
    // 进程标识
    // 进程状态
    // 进程资源
}

在 Linux 中, PCB这个结构体被称为: struct task_struct , 如果感兴趣可以去看 Linux 的源码.

操作系统对进程的控制

上面讲解了 PCB, 我们知道了, 操作系统就是通过 PCB 来管理进程的.
那么对进程的管理就转变为了对 PCB 的管理.

一个操作系统管理的进程可能成百上千, 那么我们也需要将这些进程组织起来, 如果这些进程零零散散的杂乱无章, 那么操作系统就很难管理这些进程.

在操作系统中, 会将这些进程的 PCB 用一个链表的形式连接起来.

struct task_struct
{
    // 属性
    struct task_struct* next;
}

在 task_struct 中会保存下一个进程的指针, 这样我们就将所有的 PCB 都连接起来了, 通过遍历这个链表, 就可以访问到所有的 进程PCB, 就可以对所有的进程进行管理.

进程pid

上面我们讲述了什么是进程, 操作系统通过管理 PCB 来管理每个进程.

那么操作系统是通过什么来区分进程的?
答案就是: pid

每一个进程都有自己的 pid, 这个 pid 是唯一的, 不会存在多个进程的 pid 是同一个.
如果存在多个进程的 pid 是同一个, 那么就无法区分进程了.

如何在 Linux 中查看进程.

使用指令: ps ajx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值