LINUX多进程相关

发布于:2024-07-23 ⋅ 阅读:(137) ⋅ 点赞:(0)

1.进程的概念:

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

    正在执行的程序 ---进程 (动态)
    程序 ----加载到内存去运行--- 进程
    进程是 程序运行的实体。

    进程运行需要消耗两个主要资源:
    cpu+内存
    
    进程和程序的区别:
    1)程序是永存,进程是暂时的
    2)进程有程序状态的变化,程序没有
    3)进程可以并发,程序无并发
    4)进程与进程会存在竞争计算机的资源
    5)一个程序可以运行多次,变成多个进程
        一个进程可以运行一个或多个程序

 
2.进程的创建:

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

3.进程调度:

    保障多个任务能同时执行
        宏观并行
            多个任务同时向下执行
        微观串行
            CPU在多个任务中快速切换,保障多个任务同时向下执行
    
        
    进程调度算法:
        1.先来先执行,后来后执行
        2.短作业优先
        3.高优先级调度算法
        4.时间片轮转调度算法

    
        
        时间片:CPU在一个任务中执行的一段时间

        PCB块: 一个结构体, process control block
        500多行
        
        PCB块保存内容:
        1.PID,进程标识符
        2.当前工作路径
        3.进程打开的文件列表,文件描述符
        4.进程状态,优先级等
        5.cpu调度现场信息保护等

4.进程状态:

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

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 进程名
          
          kill -l  查看信号
            1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
             6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
            11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
            16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
            21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
            26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
            31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
            38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
            43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
            48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
            53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
            58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
            63) SIGRTMAX-1    64) SIGRTMAX    
          
        6.jobs
          查看当前终端下的后台执行任务
          
        7.fg 编号
          让一个后台执行的任务放到前台执行


网站公告

今日签到

点亮在社区的每一天
去签到