多任务管理中的进程

我们使用多任务管理,那就要考虑进程与线程俩种命令,今天,我们来看看进程的相关知识:

进程

1.进程的概念

        1.程序:是一段存放在外存中代码的集合(静态的)
        2.进程:是一个程序动态执行的过程,包括创建、调度、消亡(动态的)

         进程运行需要消耗两个主要资源:
         cpu+内存

2.进程的创建:

    进程创建后,操作系统为进程分配独立的(0 - 4G)的虚拟空间,内核只有一个。
    进程是操作系统资源分配的最小单位。
    进程空间包括:
        1.文本区(.text)
            存储代码和指令
        2.数据区
            1.字符串常量区
                .rodata 
            2.未初始化静态变量/全局变量
                .bss
            3.已初始化静态变量/全局变量
                .data
        
        3.系统数据段
            1.堆区 
                程序员手动管理区域
                程序员负责申请(malloc)释放(free)
        
                
            2.栈区(存放 1.局部变量
                          2.函数的形参和返回值
                          3.函数调用保护现场)
                操作系统管理区域
                操作系统负责申请释放
                
                
        4.内核区域
            1.CPU管理
            2.内存管理
            3.文件系统管理
            4.硬件设备管理
            5.进程管理


3.进程调度:

        保障多个任务能同时执行
        宏观并行
            多个任务同时向下执行
        微观串行
            CPU在多个任务中快速切换,保障多个任务同时向下执行
 

        进程调度算法:
        1.先来先执行,后来后执行
        2.短作业优先
        3.高优先级调度算法
        4.时间片轮转调度算法
 

4.进程状态:(linux系统内的进程状态)

     1.运行态(用户运行态、内核运行态)     R
        正在执行,且被CPU任务调度所执行的进程
        
     2.就绪态    R
        正在执行,没有CPU任务调度执行的进程(只缺少cpu)
        
    3.可唤醒等待态    S
        也称为睡眠态,阻塞等待资源的进程
        
    4.不可唤醒等待态 D
        不想被CPU任务调度所打断的进程任务可以设置为不可唤醒等待态
        
    5.暂停态    T
        被暂停执行的进程
        
    6.僵尸态    Z
        进程执行结束,空间没有被回收
        
    7.结束态    X
        进程执行结束,空间被回收

普通进程状态分为3种:就绪态,执行态,阻塞态三种

5.进程相关命令:

        1.ps -aux
          查看进程状态

          ps -aux|grep a.out
                   |管道:筛选与之相关的软件

        2.top 
          根据CPU占用率;查看进程信息
          q 退出
        

          
        3.ps -ef
          查看当前时刻进程信息        

          PID:子进程的ID号(唯一)
          PPID:父进程的ID号

        4.pstree
          查看进程关系
          
          pstree -p   
          查看所有进程关系及pid号
          
          pstree -sp + 进程id号
          查看某一进程关系
          
        5.kill
          killall
          给进程发送一个信号
          
          kill -9 进程PID
          killall -9 进程名
      
        6.jobs
          查看当前终端下的后台执行任务
          
        7.fg 编号
          让一个后台执行的任务放到前台执行


6.进程创建关系:

        父子进程:
            父进程:创建新进程的进程称为新进程的父进程
            子进程:被创建的进程称为原进程的子进程
        
        内核进程
        systemd进程(1)
        所有进程任务

 7.进程相关接口:

      1.fork :
      pid_t fork(void);
     
       一次调用,会返回两次。
       子进程先运行还是父进程先运行,顺序不确定。变量不共享。
       子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。
       
      功能:通过该函数可以从当前进程中克隆一个同名新进程。
          克隆的进程称为子进程,原有的进程称为 父进程。
          子进程是父进程的完全拷贝。
          子进程的执行过程是从fork函数之后执行。
          
          子进程与父进程具有相同的代码逻辑。
      参数:
        缺省
      返回值:
        失败返回-1 
        成功父进程中返回子进程的PID
            子进程中返回0 

2.getpid
          pid_t getpid(void);
    功能:
        获得调用该函数进程的pid
    参数:
        缺省
    返回值:
        进程的pid
    
    3.getppid 
     pid_t getppid(void);
     功能:
        获得调用该函数进程的父进程pid号
     参数:
        缺省
     返回值:
        返回父进程id号
      

作业习题:

1.进程对文件的操作
   创建两个进程,分别向一个文件以不同的频率写入:不同数据+时间戳+写入者pid


 2.动态生成5个子进程,并打印输出各自进程的pid号

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值