标签搜索

目 录CONTENT

文章目录

进程的概念.md

小小城
2021-08-22 / 0 评论 / 0 点赞 / 6 阅读 / 1,759 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-02,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

进程的概念

@[toc]

一、操作系统:

  • 1.概念:操作系统是一个用来管理计算机软硬件资源的软件,由操作系统内核(进程管理、内存管理、文件管理、驱动管理)+ 一组程序
  • 2.操作系统管理软硬件资源的方法:描述+组织
  • 3.系统调用和库函数
  • (a).系统调用:系统调用是操作系统内核对外提供的接口,供用户开发使用
  • (b).库函数:库函数是一些大佬为了方便系统调用函数的使用,把系统调用接口进行封装,就成了库函数,这样更方便来上层用户的开发与二次使用

二、进程

  •  1.进程的概念:
  • a.从书面观点来说程序运行起来的实例
  • b.从内核观点来说是担当分配系统资源的实体
  •  2.进程和程序的区别:
  • a.进程是程序执行起来的动态实体,程序是静态的
  • b.进程是有一定生命周期的,程序是指令的集合,是一个文本
  • 一个程序可以有多个进程,但一个进程只有一个程序
  •  3.描述进程:
  • 进程的所有信息都放在进程控制块中的数据结构中,是进程属性的集合,也叫PCB,其中Linux下描述进程的PCB叫task_struct
  • 进程标识符(pid):是描述一个进程的唯一标识符,通俗来说就是进程的身份证,是唯一的,用来区分其他进程的
  • 通过fork函数来创建一个进程,注意该函数的返回值:
  1. 返回值小于0,代表因为内存不足等原因导致创建进程失败
  2. 返回值等于0,代表子进程
  3. 返回值耽于0,代表父进程,返回子进程的pid

fork出来的进程是子进程采用写时拷贝的方式拷贝父进程的代码,但注意,虽然拷贝的是父进程的代码,但父子进程的数据是独有的

  • 进程的状态:(状态后面待+表示是前台进程,没有+号代表后台进程)
状态描述
运行状态(R)正常运行的进程或处于就绪队列等待的进程
睡眠状态(S)进程在等待事件的完成,是可以中断的,可以调用sleep函数模拟
磁盘睡眠状态(D)不可中断的睡眠
暂停状态(T)可以通过信号来控制进程的暂停状态
跟踪状态(t)进程调试的时候
僵尸状态(Z)产生原因:子进程先与父进程退出,父进程没有收到子进程的状态退出信息,就会产生僵尸进程,并且僵尸进程会一直处于进程表中;危害:由于僵尸进程一直处于进程表中,一只占用内存,且一直无法释放,就会造成内存泄漏问题;防范措施:kill掉僵尸进程的父进程或采用进程等待的方式
死亡状态(X)进程的一个返回状态

注意:孤儿进程的产生原因是父进程先与子进程退出;最后操作系统为了防止内存泄漏,孤儿进程统一由1号进程回收;(如果某一进程的父进程本来就是1号进程,它不是孤儿进程)

  • 优先级:相对于其他进程的优先级
  • 程序计数器:保存程序执行的下一条指令的地址
  • 内存指针:指向程序代码和进程相关数据的指针,方便告诉CPU在内存中取数据的位置,还有指向进程地址空间
  • 上下文数据:因为一个进程不可能一直占用CPU,所以当其在次执行时方便在原有的基础上继续执行,即保存进程执行过程中的数据
  • IO状态信息

并行:多个进程占用多个CPU,即一个进程一个CPU
并发:因为CPU的执行速度是非常快的,所以物理上多个程序是交替进行执行的,逻辑上是几个进程是同时进行的

  • 记账信息等:记录进程占用CPU的时间等

  •  组织进程:

  • 操作系统内核采用双向链表来组织进程的,如果一个进程处于就绪状态,就会被操作系统内核挂到这个双向链表中,等待CPU的执行,一旦执行完毕,就会从双向链表中取下来

三、环境变量

  •  1.环境变量是为了操作系统执行起来更加方便而引出的
  •  2.常见的环境变量:
  • a.PATH:查看可执行程序的环境变量
  • b.HOME:保存当前用户家目录的环境变量
  • SHELL:保存当前shell版本的环境变量
  • LD_LIBRARY_PATH:程序运行起来,库文件搜索的环境变量
  • LIBRARY_PATH:程序编译时库文件搜索的环境变量
  •  常见的命令
  • env:查看当前操作系统的所有环境变量及其值
  • echo $[环境变量名]:查看当前指定环境变量的值
  • set
  • export:

在文件中永久修改环境变量:

修改当前用户下的环境变量:

vim ~/.bashrc或 vim ~/.bash_profile

修改系统下啊的环境变量

vim /etc/bashrc

可以用export[环境变量名]=环境变量的值;

注意修改后一定要指定:sourse [修改后的环境变量文件];告诉操作系统,该环境变量已经修改

0

评论区