进程 & 线程概述

一、进程

1.进程的定义

进程是操作系统为了实现CPU级别的并发而抽象出来的一个概念,表示加载在内存中,进行中的程序。

2.进程的由来

要了解进程的由来,先要了解一下操作系统

1>操作系统的定义

操作系统是介于计算机硬件和应用软件之间的软件系统,统一管理计算机的所有资源

2>单道批处理系统

最开始计算机只提供内置的库函数,用户手动输入要调用的函数来完成工作。这个阶段的操作系统只有内置的库函数,用户自己控制程序的开始和结束。

人们发现这种工作模式的效率相当低,大部分时间计算机在等待操作员的输入而空闲。人们设想,如果操作员能够提前把需要调用的函数想好,批量导入计算机,那么计算机的执行效率就会大大提高,从这个角度出发,人们设计出了单道批处理系统,用户提前把需要调用的函数写在纸带上,操作员收集一定数量的用户程序后,批量导入计算机,一个接一个的自动执行。这个阶段的操作系统由库函数和批处理监视器组成,批处理监视器负责程序的调度和程序的执行。

3>多道批处理系统

单道批处理系统提高了计算机的使用效率,但是存在一个问题,程序是串行执行的,后一个程序必须在前一个程序执行完之后,才能执行,即便前一个程序因为某些原因阻塞而导致CPU空闲。当时计算机是机器昂贵的,人们无法容忍计算机因为阻塞而空闲下来。如果能够在程序因为资源阻塞时,调度其他没有阻塞操作的程序执行,在程序获取阻塞资源后,再通过调度继续执行,那么计算机的效率将获得空前的提高。按照这种设想,人们设计出了多道批处理系统。它同时加载多个程序到内存中,形成后备队列,通过批处理监视器完成程序的调度,当计算机空闲时,批处理监视器按照某种算法从后备队列取一个程序执行,直到所有的程序执行完。

4>分时操作系统

在批处理系统中,用户提交程序给操作员,操作员批量导入程序执行,一段时间之后,用户拿到程序的执行结果,此时管理计算机的人只有操作员,用户不能控制自己程序的执行和结束。基于让用户重新回到计算机前即每个用户自己控制程序的开始和结束的思考,人们设计了分时操作系统。在多道批处理系统的基础上,按照某种算法,计算机定时在不同的程序之间轮换,在宏观上创造出所有程序都在同时运行的假象。在分时操作系统中,多个程序被加载到内存中,通过时间片轮换来执行,那么程序的调度和管理就成了非常关键的问题。为了更好的管理和调度程序,操作系统抽象出了进程的概念。

3.进程的组成

由进程的定义可以知道,进程至少由两个组成部分:程序和内存地址。除此之外,进程代表执行中的程序,所以需要一个程序计数器,记录程序执行的位置;当操作系统调度进程时,涉及到进程状态的恢复,所以需要寄存器保存进程的执行状态;进程申请的资源(创建的文件、打开的文件等)也需要记录;操作系统加入安全模块后,进程申请的权限也需要记录下来,所以总体来讲,进程主要由以下部分组成:程序机器码、内存地址、程序计数器、寄存器、系统资源描述符、权限。同时,操作系统为进程创建了进程控制块(PCB)来记录进程的关键信息:进程ID、进程状态、内存信息、寄存器信息等

4.进程间通信

进程通信的方式,可以类比人类社会,人与人通信的方式,因为计算机科学的许多设计和实践都来源于对人类社会的观察和思考。

进程间通信的主要方式有:

1>(匿名)管道:使用标准输入输出单向传递数据的通道。一端写入,一端读取,数据写入端写入的数据被操作系统缓存,直到数据被读入端读取。

2>有名管道:使用文件系统中的文件代替了标准输入输出的管道。多个进程可以读取和写入数据到文件中。

3>共享内存:通过在一块可以被多个进程访问的内存地址上创建共享缓冲区的方式,实现进程间的通信

4>信号:从一个进程发到另一个进程的系统消息。通常不用来传输数据,而是发送远程控制指令。

5>文件:磁盘存储的或者文件服务器提供的可被多个进程访问的记录

6>消息传送:允许多个进程访问一个消息队列,通常用在并发控制上。

7>Socket:一种通过网络接口发送的数据流,可以发送到本机的进程或者网络进程。

8>内存映射文件:一个被映射在内存中的文件,可以通过内存地址直接修改而不必创建输出流。

5.进程的销毁

进程执行完毕或者被操作系统终止,就没有存在的必要了。操作系统可能立即删除进程信息或者把它移入终止状态。一旦进程被删除,它的申请的资源就会被操作系统回收。

二、线程

线程是操作系统抽象的一个概念,是进程的一个执行上下文或者执行序列。进程提供CPU级别的并发,线程提供进程级别的并发。在线程模型中,一个进程可以有多个线程,但至少有一个线程,就是主线程。这些线程共享进程的代码、内存地址,但是有自己独立的程序计数器、寄存器。

1.线程的由来

进程概念的提出,可以让CPU在宏观上实现同时运行多个程序并发执行,但是因为每个进程有独立的空间,进程之间的调度和资源协调非常昂贵,而如果能够在一个进程内,共享资源的情况下,实现并发,那么开销会大大减小,调度效率会大大提高,这就是线程模型。

2.线程的组成

线程设计的一个目的是在共享资源的情况,减少调度开销,所以线程主要由共享资源和非共享资源组成。地址空间、全局变量、打开的文件等是跟其他线程共享的;程序计数器、栈、寄存器、状态字这些跟线程执行相关的信息是线程的独享资源。另外,管理线程的调度程序还维护了线程的线程控制块,它记录了线程的ID等线程运行信息。

3.线程的同步问题

实现同步的手段:

1>锁

2>管程

3>信号量

4>栅栏

5>消息传递

4.线程实现方案

1>用户态实现

2>内核态实现

3>用户态和内核态混合实现

三、参考资料

进程

进程间通信

线程

同步

多任务

CPU

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容