第一章 进程、线程之初级探秘
文章目录
前言
进程和线程作为码农行业的入门基础知识,在我们初学阶段都会学到,在日常工作当中也会经常使用到。虽然接触的时间横跨我们整个编程生涯,不过,总会产生一种囫囵吞枣、管中窥豹的感觉。这样虽然不会影响工作进行,但是时常会让我产生困惑,我真的理解他们的含义了么,我该使用多进程还是多线程。基于想解决这种不明晰感觉的目的,打算遍查资料并结合自身经验写几章博文铭记一下。博文采用讲故事与理论结合的方式进行描述,希望更加的通俗易懂。那么故事开始…
故事情节:采用开发商扮演操作系统,施工楼号扮演进程,浇筑工、钢筋工等工人扮演线程,资源车扮演CPU寄存器。
一、进程是什么?
进程的百度解释:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
1.核心概念
一是:拥有自己的地址空间的实体。地址空间包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文件区域存储我们编写的程序代码,数据区域存储变量、堆存储动态分配的内存,栈存储局部变量及运行栈帧。这跟我们的房子很像,有卧室、客厅、厨房、厕所等区域。
二是:执行中的程序。程序本身是死的,被执行以后才是活的,才能称之为进程。进程可以占用cpu完成程序代码的执行。
2.进程特性介绍
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
(1)多道程序设计技术:是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制下,相互穿插运行,两个或两个以上程序在计算机系统中同处于开始到结束之间的状态, 这些程序共享计算机系统资源。与之相对应的是单道程序,即在计算机内存中只允许一个的程序运行。
并发性:任何进程都可以同其他进程一起并发执行
(1)对于一个单CPU系统来说,程序同时处于运行状态只是一种宏观上的概念,他们虽然都已经开始运行,但就微观而言,任意时刻,CPU上运行的程序只有一个。
(2)现在存在双cpu主板,可以安装两块cpu,理论上讲两块cpu可以支持两个进程同一时刻运行,但在网上没有找到相关的资料。双cpu主板高功耗和高成本,一般用于服务器端。
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。
(1)程序段:存放程序代码。
(2)数据段:存放程序运行时使用、产生的运算数据,如全局变量、局部变量、宏定义的常量。
(3)进程控制块:是操作系统核心中一种数据结构,它存放着操作系统用于描