linux下的进程

发布于:2025-03-18 ⋅ 阅读:(22) ⋅ 点赞:(0)

1、冯诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当数据在计算机内部流转时,本质上是不同的设备间不停地拷贝

2、操作系统

2.1 概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
内核(进程管理,内存管理,文件管理,驱动管理)
其他程序(例如函数库,shell程序等等)
在这里插入图片描述

2.2 设计OS的目的

与硬件交互,管理所有的软硬件资源
为用户程序(应用程序)提供一个良好的执行环境
在这里插入图片描述

2.3 定位

在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件

2.4 如何理解 “管理”

管理的例子
描述被管理对象
在这里插入图片描述

组织被管理对象

在这里插入图片描述
在这里插入图片描述
我们的程序都不是直接写入硬件,都是贯穿操作系统

在这里插入图片描述

3、进程

3.1 基本概念

在这里插入图片描述

3.2 描述进程-PCB

在这里插入图片描述

3.3 最早版本task-struct(linux)

在这里插入图片描述

在这里插入图片描述

3.4 查看进程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
杀掉进程:
在这里插入图片描述
20636:进程pid

在这里插入图片描述
proc:process(进程的信息以文件形式存于这个目录)
ps底层就是对/proc里的进程进行文本分析
在这里插入图片描述
查看该进程所有的属性

cwd:
在这里插入图片描述
一般我们写完代码后,执行可执行程序会在当前目录下创建exe,当前路径(cwd);
chdir:改变上述文件创建位置

/proc不是硬盘级别的文件,而是内存级别的,每次启动系统,都会刷新

3.5 getppid(副id)

在这里插入图片描述

4 系统调用,创建进程

4.1 见一见

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 理解

在这里插入图片描述
在这里插入图片描述

4.3 多进程创建

在这里插入图片描述

在这里插入图片描述

4.4

在这里插入图片描述

4.5 进程的状态

在这里插入图片描述
为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(在
Linux内核里,进程有时候也叫做任务)。
下面的状态在kernel源代码里定义

 The task state array is a strange "bitmap" of
* reasons to sleep. Thus "running" is zero, and
* you can test for combinations of others with
* simple bit tests.
*/
static const char * const task_state_array[] = {
"R (running)", /* 0 */
"S (sleeping)", /* 1 */
"D (disk sleep)", /* 2 */
"T (stopped)", /* 4 */
"t (tracing stop)", /* 8 */
"X (dead)", /* 16 */
"Z (zombie)", /* 32 */
};

分时操作系统(为每个进度分配时间)
实时操作系统

在这里插入图片描述
在这里插入图片描述
-19暂停进程
-18重新启动进程
断点本质是进程暂停
在这里插入图片描述
在这里插入图片描述
僵尸进程:该进程的代码与数据已经被回收,但是task_struct还在维护
在这里插入图片描述
在这里插入图片描述
孤儿进程:

在这里插入图片描述

5 进程优先级

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6、进程切换

在这里插入图片描述
//
在这里插入图片描述
//
在这里插入图片描述

//
在这里插入图片描述
//
在这里插入图片描述
保存上次数据的地方肯定在内存中(当前进程的PCB)
在这里插入图片描述

7、进程调度

在这里插入图片描述
前100给实时进程调度
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述