linux的进程基本概念

linux进程概念

  • (1)冯诺依曼体系结构
  • (2)操作系统
  • (3)进程概念
  • (4)进程状态
  • (5)环境变量
  • (6)程序地址空间

(1)冯诺依曼体系结构

计算机的硬件体系结构
五大硬件单元:输入设备,输出设备,运算器,控制器,存储器
所有的设备都是围绕内存工作的
linux的进程基本概念_第1张图片

(2)操作系统

是什么:软件—管理计算机上的软硬件资源
定位:让计算机更加好用
打个比方,操作系统就好像是一个政府,其它软件都会被它管控;操作系统在给其他软件提供各种便利的同时,还约束其他软件不能为所欲为。
linux的进程基本概念_第2张图片
管理:描述+组织
系统调用:操作系统向用户提供的用于访问内核的接口
库函数:针对典型功能的封装接口
库函数与系统调用的关系:库函数封装了系统调用接口

(3)进程概念

进程是什么:进程就是运行中的程序

程序:软件-程序员写的代码,程序本质上都存储在硬盘,基于冯诺依曼体系,程序运行,首先要将程序从硬盘加载到内存中。

CPU分时机制:让每个程序的运行在CPU上只占有很短的一段时间(时间片),切换运行。
linux的进程基本概念_第3张图片
进程,在用户的角度是运行中的程序,但是在操作系统的角度,是程序运行的动态描述-pcb,其中包含程序运行的各项信息,实现操作系统对于运行中程序管理。

pcb描述信息:
标识符-PID,内存指针,程序计数器,上下文数据
进程状态,进程优先级,IO信息,记账信息

(4)进程状态

描述进程当前处于什么状态
应该如何被操作系统调度管理

种类:就绪,运行,阻塞

linux分类:

运行态-R:正在运行的,以及拿到时间片就能运行的
可中断休眠态-S:可以被打断的阻塞状态
不可中断休眠态-D:不可被打断的阻塞状态
停止态-T:停止运行
僵尸态-Z:程序退出后的中间等待处理状态
         僵尸进程:僵尸态的进程,退出后资源没有完全被释放的进程
         产生:子进程先于父进程退出,为了保存自己的退出返回值,
         因此没有完全释放资源,等待父进程处理。
         避免:进程等待
         处理:退出父进程
         危害:资源泄露(内存+进程数量)           

查看进程指令:ps -ef -aux
创建进程:pid_t fork(void)

给父进程返回子进程的pid,给子进程返回0,失败返回-1
孤儿进程:父进程先于子进程退出,子进程成为孤儿进程
    特性:运行在后台,父进程成为1号进程
         孤儿进程退出不会成为僵尸进程
守护进程-精灵进程:是一个特殊的孤儿进程,运行在后台,与终端脱离关系。

linux进程的5种状态(运行,可中断休眠,不可中断休眠,停止,僵尸)

(5)环境变量

保护程序运行环境的变量

环境变量相关指令:
env:查看所有的环境变量
set:查看环境的所有的变量
echo:打印某个指定变量的数据
export:用于声明环境变量
unset:删除变量

重要环境变量: PATH-程序的默认运行路径

环境变量的特性:具有进程之间的传递性

在程序中获取环境变量的接口:

char *getenv(char *name);
   name:环境变量名称
返回值:对应name环境变量的数据,如果找不到返回NULL

(6)程序地址空间

linux的进程基本概念_第4张图片进程地址空间;每个进程都有一份;给每一个进程虚拟一个完整的地址空间;进程的虚拟地址空间。

虚拟地址空间:实际上就是一个地址空间的描述,本质上是一个结构体描述:struct mm_struct

操作系统给每个进程虚拟一个独立的完整的虚拟地址空间,让每一个进程都可以访问自己独立的连续的虚拟地址,但是实际的数据存储可以经过映射之后,可以存储到物理内存的任意位置不用连续,实现数据在物理内存上的离散式存储。
离散式存储提高了内存利用率!

总结:程序地址空间,本质上是操作系统为进程通过mm_struct描述的虚拟的地址空间,让每个进程都能访问一个独立的完整的连续的虚拟地址,经过映射之后,实现在物理内存上的离散存储,提高内存利用率,提高了内存访问控制。

你可能感兴趣的:(linux,运维,服务器)