Linux复习:进程一 《进程概念》《描述进程》《进程状态》《环境变量》《程序的地址空间》

一,进程的概念
1.冯*诺依曼体系结构
在这里插入图片描述
二,操作系统

1.概念:任何计算机都包含一个基本的程序集合,叫做操作系统
2.设计OS的目的:1)实现软硬件交互,管理所有的软硬件资源。2)为用户提供一个良好的执行环境
3.定位:搞管理的的软件

4.描述进程——PCB

程序是一个文件。
进程是:《 进程比程序多了一个PCB结构体 》	一个PCB结构体

1.task_struct-PCB

在Linux中描述进程的结构体叫做task_struct。
task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。

//看到PCB4-4-1 还没有看完

了解操作系统的话,一定要在站在数据结构的层面来进行了解。
一,查看进程:

 **1.当对一个程序运行之后,那就是起了一个进程,可以使用 PS 命令**
 	ps aux | grep 'test'(运行的程序名字)
 	
   2.**拿出头属性 --ps aux | head -1**
 	ps aux | head -1 && ps aux | grep 'test'(运行的程序名字)

   3.top也可以查看进程  //相当于windows下的任务管理器

在这里插入图片描述
杀死一个进程,不一定需要ctrl +c ,也可以是 kill + 9 + 3420(PID)

二,getpid - 获取当前系统的pid
相关文件:
在这里插入图片描述
getpid - 获取当前系统的pid
getppid - 获取当前系统的父进程的pid

三通过系统调用查看进程–fork
参考代码如下:

  1 #include<iostream>
  2 #include<stdio.h>
  3 #include<unistd.h>
  4 #include<sys/types.h>
  5 using namespace std;
  6      
  7 int main()
  8 {    
  9     fork();
 10     while(1){
 11     cout << " getpid... "<< getpid()<< " getppid... " << getppid() << endl;;                                                                                                                                 
 12     sleep(1);
 13      
 14     }
 15     return 0 ;
 16 }

在这里插入图片描述
这里可以看出,创建fork()进程,里面有两个进程
在这里插入图片描述
创建父子进程的代码如下:

  1 #include<iostream>
  2 #include<stdio.h>
  3 #include<unistd.h>
  4 #include<sys/types.h>
  5 using namespace std;
  6      
  7 int main()
  8 {    
  9 //  fork();
 10 //  while(1){
 11 //  cout << " getpid... "<< getpid()<< " getppid... " << getppid() << endl;;
 12     int ret = fork();
 13     if(ret < 0){
 14      
 15         perror("fork");
 16         return 1;
 17     }
 18     else if(ret == 0){ //child
 19     printf("I am child : %d!, ret: %d\n", getpid(), ret);
 20     }else{ //father
 21     printf("I am father : %d!, ret: %d\n", getpid(), ret);
 22     }
 23      
 24      
 25     sleep(1);                                                                                                                                                                                                
 26     return 0 ;
 27 }

四,进程状态

R运行状态(running): 并不意味着进程一定运行中,它表明进程要么是在运行中要么在运行队列里。
S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠(interruptible sleep))
D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束。
T停止状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。
X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态。

1.僵尸进程
**概念:**当一个子进程运行完了之后,并不会直接被释放,而是先被维护起来,在维持一段时间【并且父进程没有读取到子进程的状态,子进程进入 Z (死亡进程)状态】。《 一个进程长时间处在僵尸状态吧,不被释放回收,就就会导致内存泄漏问题
(1)僵尸进程的危害:
1.不及时回收的话,一直在占内存,就是我们常说的内存泄漏

2.孤儿进程:
概念:父进程先退出,子进程就叫做孤儿进程,但是一旦产生孤儿进程,那么就要立即被领养,被最大的有实力的领养,那么就是操作系统领养。

看父进程的命令:ps axj | head -n1

我们可以看到当父进程退出之后,子进程就会变成1,被系统回收了

五,进程的优先级

权限:是有没有这个权限,看是否能做。
优先级:能做,就是看谁先做
查看优先级:ps -l
在这里插入图片描述
PRI:优先级
我们主要看NI–叫做NICE值
如果PRI = 80,NI= -10,那么我的优先级为70
如果PRI = 80,NI= 10,那么我的优先级为90
所以: 我们真正可以调教优先级值的是NICE值,所以我们吧NICE值叫做Linux下的修正数据,
修改优先级:
我们可以使用 top 命令,然后再按一个 r,记住这是root用户下面,普通用户不能修改,然后我们还可以试一下:优先级最大为99,最小为60,NI的最大范围为0—19,最小范围为-20—0

六,其他概念:

竞争性 系统进程数量太多但是CPU数量只有少数,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级

独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰

并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行

并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发

七,环境变量

PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL : 当前Shell,它的值通常是/bin/bash。

查看环境变量命令:
echo:$PATH

exprot【也可以创建环境变量,导入到系统的环境变量中】:导出环境变量 export PATH = P A T H ( 把 老 的 保 存 起 来 , 要 不 容 易 覆 盖 了 ) : + 添 加 自 己 路 径 ( p w d 查 看 自 己 的 路 径 ) ∗ ∗ e x p o r t P A T H = PATH(把老的保存起来,要不容易覆盖了):+添加自己路径(pwd查看自己的路径) **export PATH= PATH()+pwdexportPATH=PATH:+添加自己路径**
添加这个路径之后,那么在这个路径下面运行什么程序,都是可以运行的呢
echo: $HOME
当Linux再开启时,为用户打开其默认的工作目录下。

env:查看系统中的大部分环境变量

环境变量:是系统本身定义的环境变量,他有着特殊的用途

八,程序的地址空间

在这里插入图片描述
地址空间的描述:
在这里插入图片描述
通过上面这张图,我们据可以了解,两个进程在运行时,是相互独立的 ,是通过页表将虚拟地址映射到物理内存上面的,将数据存放再不同的物理内存上面的。

所以: 他们的虚拟地址是相同的,但是物理地址是不同的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值