<commit_before>---
layout: post
title: 操作系统进程的状态、转换及其调度策略
category: 技术
tags: OS Process
keywords: 
description: 
---


###操作系统进程的状态：

- 新建：process正在被创建
- 运行：process获得CPU的执行时间
- 等待：process等待某个事件发生
- 就绪：process进入就绪队列，等待分配CPU
- 终止：process完成执行

![process status](/public/img/posts/2015-10-19/process-schduling-1.JPG)

###进程控制

####创建 （fork()）
- 为new process分配唯一的Pid，并申请`PCB`（有限），若PCB申请失败，则创建失败
- 为new Process分配资源：分配程序、数据、用户栈等必要的空间（`PCB中体现`）。注意：这里内存不足时，处于`等待`状态或`阻塞`状态，等待内存资源
- init PCB：标志信息、状态、CPU控制信息、优先级
- 加入就绪队列（在可以容纳的情况下，**如果无法容纳呢？**）

列出进程列表

``` 
ps
```

列出系统所有当前活动进程的完整信息

```
ps -el
```

当进程创建新进程时，有两种可能：

1. 父进程与子进程并发执行
2. 父进程等待，直到某个或全部子进程执行完毕

新进程的地址空间也有两种可能：

1. 是父进程的复制品（内容拷贝，但是地址不同）<commit_msg>update img url<commit_after>---
layout: post
title: 操作系统进程的状态、转换及其调度策略
category: 技术
tags: OS Process
keywords: 
description: 
---


###操作系统进程的状态：

- 新建：process正在被创建
- 运行：process获得CPU的执行时间
- 等待：process等待某个事件发生
- 就绪：process进入就绪队列，等待分配CPU
- 终止：process完成执行

![process status](https://raw.githubusercontent.com/paranoidq/paranoidq.github.io/master/public/img/posts/2015-10-19/process-schduling-1.jpg)

###进程控制

####创建 （fork()）
- 为new process分配唯一的Pid，并申请`PCB`（有限），若PCB申请失败，则创建失败
- 为new Process分配资源：分配程序、数据、用户栈等必要的空间（`PCB中体现`）。注意：这里内存不足时，处于`等待`状态或`阻塞`状态，等待内存资源
- init PCB：标志信息、状态、CPU控制信息、优先级
- 加入就绪队列（在可以容纳的情况下，**如果无法容纳呢？**）

列出进程列表

``` 
ps
```

列出系统所有当前活动进程的完整信息

```
ps -el
```

当进程创建新进程时，有两种可能：

1. 父进程与子进程并发执行
2. 父进程等待，直到某个或全部子进程执行完毕

新进程的地址空间也有两种可能：

1. 是父进程的复制品（内容拷贝，但是地址不同）
{'fraction_non_alphanumeric': 0.16655382532159782, 'fraction_numerical': 0.016249153689911984, 'mean_word_length': 5.842592592592593, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6430000', 'n_tokens_mistral': 1059, 'n_tokens_neox': 1176, 'n_words': 87}