• 进程的概念


    目录

    进程的概念

    进程的描述pcb

    查看进程

    父子进程 

    fork函数创建父子进程

    进程状态

    进程状态查看

    进程状态

    Z——僵尸进程

    孤儿进程

    进程的优先级

    其他概念


    进程的概念

    程序的一个执行实例,启动一个软件,本质上是启动一个进程

    linux中,运行命令,也是创建一个进程,内核上的说法是担任分配系统资源的实例

    每次调用程序,都会创建一个新的进程

    一个作业任务的完成可由多个进程组成,且必须至少由一个进程组成

    程序是静态的,而进程是动态的。

    进程的描述pcb

    文件 = 内容 + 属性

    进程 = 对应的代码和数据 + 进程对应的pcb结构体

    pcb(process control block)进程控制块,是一个结构体

    task_struct是linux下描述进程的结构体

    查看进程

    方式一:

    ps -l        查看当前进程

    ps -axj        查看所有进程

    方式二:

    ls /proc        查看所有进程文件

    ls /proc/pid        查看对应进程的文件,其中有些文件是每个进程都会具有的

    父子进程 

    pid_t        是无符号整型
    getpid()        获取子进程
    getppid()        获取父进程


    头文件:
    #include
    #include
    只需要包含其中一个

    所有的函数只能在进程中才能被调用

    kill -9 pid        可以关掉进程

    killall 名称        关掉所有和名称有关的进程

    每次登录都有不同的shell进程

    fork函数创建父子进程

    头文件是        #include

    返回值pid_t        无符号整型

    子进程返回0,父进程返回子进程pid,出错返回-1

    使用后会变成两个进程,一个父进程,一个子进程

    进程状态

    进程状态查看

    ps -l        查看当前的进程

     ps ajx        查看所有进程

    进程状态

    R(running):运行状态

    S(sleeping):阻塞状态,可中断

    D(disk sleep):书面状态,磁盘状态,深度睡眠,不可被中断,不可以被被动唤醒

    T(stopped):暂停状态

    (睡眠和暂停区别,睡眠等待资源,暂停为了调试)

    t(tracing stop):调试状态

    Z(zombie):僵尸状态,一个进程已经退出,但是还不允许被os释放,处于一个被检测的状态-僵尸状态(一般是父进程或os检测)

    X(dead):dead终止状态(具有瞬时性)

    +前台进程(启动后,是的命令无效,命令行解释器无效,可以使用ctrl + c取消)

    ./文件 & (后台进程)

    Z——僵尸进程

    概念:一个子进程已经退出,但是还不允许被os释放,处于一个被检测的状态-僵尸状态(一般是父进程或os检测),此时会一直等待父进程读取退出状态代码

    危害:内存泄露,pcb一直需要维护子进程

    孤儿进程

    概念:

    父进程退出,子进程还在,子进程就叫做孤儿进程!

    孤儿进程会被1号进程领养(init,系统本身)

    进程的优先级

    概念:cpu资源分配的先后顺序

    pri:代表被执行的优先级,值越小越早被执行

    ni(nice):优先级的修正数据(值-20 - 19)

     pri(new) = pri(old) + nice

    更改pri:进入top后按“r”->输入进程pid->输入nice值
    普通用户修改优先级只能往低的调,调高要sudo

    其他概念

    竞争性:系统进程数量多,而cpu只有少量或者只有一个,所以进程中具有竞争属性,有了优先级

    独立性:多进程运行,共享资源,多进程之间互不干扰

    并行:多个进程在多个cpu下运行,成为并行

    并发:多个进程在一个cpu下采用进程切换方式,使得一段时间内,多个进程都能够进行运行,称为并发

    时间片:os会给每个进程设置一个时间段提供运行,过来这段时间,这个进程就会被强制下线

    抢占和出让:进程会根据优先级强制将前面还没有完成时间片的进程下线,或者出让给优先级高的进程

    上下文数据:寄存器中的临时数据,叫做a的上下文数据,上下文数据不能够被丢弃

    切换:如果进程a正在被运行,cpu内的寄存器里面,一定保存的是进程A的临时数据,当进程a被切换下来时候,进程a需要带走自己的上下文数据,为了下次回来时候,能够恢复,继续按照之前的逻辑运行

  • 相关阅读:
    【打卡】牛客网:BM59 N皇后问题
    校园网络设计环境分析
    1.1数据结构的基本概念
    mysql笔记
    企业最关心的ISO三体系认证的几个问题
    Elasticsearch集群运维,重平衡、分片、宕节点、扩容
    【极客时间2】左耳听风
    jsoncpp库的使用及用httplib库搭建HTTP服务器
    Android Studio 报错:AVD Pixel_3a_API_30_x86 is already running
    [JavaEE系列] 进程与线程之间的区别和联系
  • 原文地址:https://blog.csdn.net/qq_45358642/article/details/126795002