3.5 Unix的fork()实现

为子进程分配一个悠闲之长河描述称
proc结构

分红给子进程唯一标识pid

为同样坏同页的点子复制父进程地址空间
坏处:Unix中从父亲进程复制到子进程的情,好多且无待。Linux采用了描写时复制技术COW加快创建过程
Copy-On-Write

从今父进程处继承共享资源,如打开的公文以及当前工作目录等

将子进程的状态设为就绪,插入到妥善队列

对进程返回标识符0

通往父进程返回子进程的pid

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    pid_t pid;

    pid = fork();    // 创建一个子进程
    if (pid < 0) {    // 出错
        fprintf(stderr, "fork failed\n");
        exit(-1);
    } else if (pid == 0) {    // 子进程
        execlp("/bin/ls", "ls", NULL);
    } else {
        wait(NULL);    // 父进程等待子进程结束
        printf("Child process complete\n");
        exit(0);
    }

    return 0;
}

统计 1

父进程空间fork()返回的是子进程的PID号。
分段进程空间fork()返回的是0

用作一个动手技术的创业者,能做出一个行之有效之制品,其实是很喜悦与喜悦的。

4.2 进程同程序的区别

经过再能够规范刻画并发,而先后不克
程序是静态的,进程是动态的
经过来生命周期,有出生有流失,是不久的;而先后是对立长期的
一个顺序可对诺多独过程
过程具有创造其他进程的效益,而先后尚未

统计 2

5.2 线程的基本概念

过程的片个主导特性
资源的拥有者—-进程要资源的拥有者
CPU调度单位—-线程继承了就同性

线程:进程面临的一个运作实体,是CPU的调度单位,有时用线程称为轻量级进程。

在平进程增加了差不多个实施序列(线程)。

安安排,这里有只网址介绍https://wiki.hotapp.cn/xiao-ke-fu/ru-he-pei-zhi.html

6.2 用户级线程小结

优点
线程切换快
调度算法是用用程序一定的
用户级线程可运行在其他操作系统及(只待实现线程库)

缺点
基础只将微机分配受进程,同一进程中的有数独线程不可知以运行及少单CPU上
大部系调用是死的,因此,由于水源阻塞进程,所以经过被持有线程也深受封堵

(3)有用户留言与客服统计功能

2.2 进程状态转换

  1. 就绪 –> 运行:调度程序选择一个新的长河运行
  2. 运行 –> 就绪:只有少数种植情况

    1. 运行过程之所以完了岁月片
    2. 一个大优先级进程上就绪状态,抢占着运作的进程
  3. 运行 –> 等待:当一个过程等某个事件闹常
    1) 请求OS服务器
    2) 对资源的看尚非可知拓展
    3) 等待I/O结果
    4) 等待其他一个进程提供信息

  4. 等待 –> 就绪:所等的轩然大波有了

  5. 以下简单栽状态转换不容许发生
    等待 –>
    运行:操作系统在进展调度时无见面起绿灯(等待)队列进行选过程执行,而是从稳妥队列中精选。
    不怕绪 –>
    等待:就绪态虽然准备妥当,但是还从来不尽,无法进去等状态。

统计 3

  (1)不需要出,只待以微信的多少程序后台配置就可以

2.1 进程状态

运行态:进程占用CPU,并于CPU上运行
过程从稳状态让调度后,进程上运行状态

就绪态:进程一度准备好,已分配到所欲资源,只要分配至CPU就会及时运行

等待态(或阻塞态):正在实践之长河由于一些事件(I/O请求,申请缓存区失败)而临时无法运转,进程中阻塞。
每当过程等的尺度满足时,进入就绪状态等系统调用

创建态
都形成创建一个经过所必备之干活,PID、PCB
唯独无同意实施该过程,因为资源少

终止态:进程执行就后,进程进入终止态
不过做到有数额统计工作
资源回收

挂起态(Suspend):用于调节负载
过程不占用内存空间,其过程映像交换到磁盘上保留

 

4.3 进程地址空间

操作系统为每个过程都分配了一个地方空间
每个过程有协调单独的地方空间,不同的地点空间的地址是虚拟地址

统计 4

 经验传送门 http://xiaokefu.hotapp.cn

7. 本章重点总结

 

2. 进程状态与状态转换

微信配置页面截图,都不需付出,真的特别便利,不欲微信对

1.3 进程的定义

定义:Process
经过是负有独自功能的次第关于某个数集合上的同样不好运行活动,是系进行资源分配和CPU调度的独门单位。

过程而如任务

程序的同等涂鸦实施进程
举凡正值运转程序的空洞
本着CPU的架空,将一个CPU变幻成多个虚拟的CPU
系统资源以进程也单位分配,如内存、文件、…
每个过程有独自的地点空间
操作系统将CPU调度给得之进程

翻开时系面临产生些许个经过:
Linux:ps命令

统计 5

0.2 线程模型

胡引入线程
线程的结缘
线程机制的实现
用户级线程、核心级线程、混合方式

探望许多小程序里,点客服,提示关注公众号,比如制作器里是作用,能够活动引导关注公众号,图文体验好好,研究了有点序客服接口后,我们不怕好把她做成一个工具了,方便小程序的运营人员。麻小客服 经验传送门
http://xiaokefu.hotapp.cn

进程/线程模型

特点:

操作系统学习笔记—-进程/线程模型

 

1.4 进程控制块PCB

PCB:Process Control Block
再者如:进程描述符、进程属性
操作系统用于管理控制进程的一个特意数据结构
笔录进程的各种性能,描述进程的动态变化过程

PCB是系统感知进程在的绝无仅有标志
经过与PCB是各个对应之

进程表:所有进程的PCB集合
进程表的尺寸相似固定
并发度:最多支持小只过程

PCB的情节涵盖什么
进程描述信息
经过控制信息
所持有的之资源与用状况
CPU线程信息

经过描述信息
过程标识符(process ID)唯一,通常是一个平头
过程名,通常与可执行文件名,不唯
用户标识符(user ID)
过程组关系

进程控制信息
现阶段状态
优先级
代码执行入口地址
次第的磁盘地址
运作统计信息(执行时、页面调度)
进程中共同同通信
经过的排指针
过程的音讯队列指针

所持有的的资源与利用状况
虚拟地址空间的场面
打开的文件列表

CPU现场消息
寄存器值(通用寄存器、程序计数器PC、程序状态字PSW、栈指针)
据为该过程也标的指针

Linux:task_struct

布后台:修改十分有利于

6.1 线程的实现

用户级线程

每当用户空间建立线程库:提供相同组管理线程的进程。

运转时系统:完成线程的管理工作(操作、线程表)

根本管理之要经过,不理解线程的留存

线程切换不欲外核态特权

差不多线程编程接口,以线程库方式供被用户,pthread

pthread_create()
pthread_exit()
pthread_join()
pthread_yield()

(2)支持图文和菜单自动恢复功能

4.1 关于进程的座谈

经过的归类

系统进程:操作系统为管理一些资源而设定的进程,特点是优先级比较高,相对于用户进程优先被调度
用户进程

前台进程:用户打交道的进程
后台进程:操作系统初始化后设定的进程,在后台为客户提供服务

CPU密集型进程:需要大量计算的进程,如:游戏、画面渲染等
I/O密集型进程:经常需要输入输出、读盘等操作

过程层次结构

Unix进程家族树:init为根

安排后的效果图

3.3 进程阻塞

处在运行状态的历程,在其运行过程遭到希望某一时间发生,如等待键盘输入、等待磁盘数据传就、等待其他进程发送信息。当给等候的轩然大波不有时,由进程自己执行阻塞原语,使和谐由于运行状态变为阻塞态。

wait();

统计 6

2.4 进程队列

经过队列:
操作系统为各一样看似经过建立一个还是多单班
行元素也PCB
陪伴进程状态的改动,其PCB从一个班进入另外一个队

等状态队列,多独待队列等待的法不同
不怕绪态队列也得是基本上独

统计 7

 

5.3 线程的性

线程:

发出标识符ID
生状态与状态转换
勿运行时得保护之上下文
出上下文环境:程序计数器等寄存器
发投机的库房和栈指针

跟一个过程的异线程,共享所在经过的地址空间及任何资源

得创造、撤销外一个线程
程序开始是盖一个单线程进程方式运行的。

统计 8

5. 线程

 

3.2 进程的撤销

撤消进程所占用的资源
关门打开的文书、断开网络连接、回收分配的内存

收回该过程的PCB

3.4 Unix的几乎独过程控制操作

fork() 通过复制调用进程(父进程)来建立新的进程,是极核心的经过建立过程

exec()
包括同样多重系统调用,它们还是经过用同样段新的程序代码覆盖原来的地方空间,实现进程执行代码的变换

wait() 提供起码进程同步操作,能使一个历程等另外一个过程的了断

exit() 用来歇一个经过的周转

7.1 进程

并发性 任何进程都得以同另外进程同上推实施
动态性 进程是在实行顺序的实例
经过是动态产生、动态消亡的
经过在那个生命周期内,在三种植为主状态里变
独立性 进程是资源分配的一个独自单位
各进程的地方空间相独立
交互性 指进程在实践进程遭到恐同任何进程产生直接或间接的关联
异步性 每个过程都为其相对独立的、不可预知的速前进推动
进程映像 程序 + 数据 + 栈(用户栈、内核栈) + PCB

8. 要概念

经过、进程状态及状态转换、进程控制、进程控制块(PCB)、进程地址空间、进程上下文环境
线程、线程属性、用户级线程、核心级线程、pthreads、可重入程序、原语、Web服务器

参照:Coursera北京大学操作系统课程笔记

0. 概述

1.2 并作环境及并发程序

起环境
一段时间间隔内,单处理器上闹些许单贩卖少只以上之先后同时处于开始运行但不曾终结之状态,并且次序不是先确定的。

并发程序
以产出环境中执行之先后

7.2 线程

大多线程应用场景
线程基本概念、属性
线程实现机制

然还入程序(可重入)
但为多独过程而调用的先后,具有下列性质:
举凡纯代码的,即当履行过程遭到自我不转移;调用它的经过应该提供数据区

6. 线程机制的贯彻

1.1 多道次设计

同意多只次同时进入内存运行,目的是为了增进CPU系统效率

4.5 上下文(Context)切换

用CPU硬件状态从一个经过换到另外一个历程的历程叫上下文切换。

经过运行时,其硬件状态保存于CPU上之寄存器中
寄存器:程序计数器、程序状态寄存器、栈指针、通用寄存器、其他控制寄存器的值

先后不运行时,这些寄存器的值保存在进程控制块PCB中;当操作系统要运行一个初的经过时,将PCB中之竞相关值送及相应的寄存器中。

0.1 进程模型

大抵道程序设计
经过的定义、进程控制块

进程状态与移、进程队列
过程控制—-进程创造、撤销、阻塞、唤醒、…

2.3 进程状态模型

统计 9

统计 10

统计 11

浅度睡眠可接过信号,而深睡眠不得以接收信号

3. 经过控制

经过控制操作完成过程各状态中的转移,由拥有特定功能的原语完成。

原语(Primitive)
做到某种特定功能的一样段落先后,具有不可分割或不足中断性。即原语的施行要是连续的,在履行过程中莫允受暂停。—-原子操作(atomic)

1. 进程的基本概念

6.3 核心级线程

基本管理有线程,并于应用程序提供API接口
基础维护过程与线程的上下文
线程的切换需内核支持
为线程为底蕴进行调度:
如:Windows

夹模型

线程创建以用户空间就
线程调度等当核心态完成
大抵独用户级线程多路复用多个内核级线程

4.4 进程映像(Image)

本着过程执行活动都经过的静态描述:
是因为进程地址空间内容、硬件寄存器内容和暨拖欠过程有关的木本数据结构、内核栈组成。

用户相关:进程地址空间(包括替代码段、数据段、堆和仓库、共享库…)
寄存器相关:程序计数器、指令寄存器、程序状态寄存器、栈指针、通用寄存器等的值
根本相关:
静态部分:PCB及各种资源数据结构
动态部分:内核栈(不同进程在进基础后采取不同的内核栈)

4. 深刻了解进程概念

5.1 线程的引入

布局服务器的老三种植方式

模型 特性
多线程 有并发、阻塞系统调用
单线程进程 无并发、阻塞系统调用
有限状态机 有并发、非阻塞系统调用、中断

支出的设想

经过有关的操作:
开创过程
注销进程
经过通信
经过切换

时光/空间开发大,限制了连发度的增进。

线程的开小
创立一个新线程话费时间掉,撤销呢是
少数个线程切换花费时间掉
线程之间互相通信无须调用内核(同一进程内之线程共享内存和文书)

特性的设想

差不多只线程,有的计算,有的I/O

多个电脑

3.1 进程的创始

让新过程分配一个唯一标识以及经过控制块

啊经过分配地址空间

初始化进程控制块
装默认值(如:状态呢New,…)

设置相应的阵指针
假使:把新过程加到即绪队列链表中