Linux(进程)

一、进程

进程概念:

        进程是一个独立的,可以调度的任务,是一个抽象的实体,是一个程序一次执行的过程,它是一个动态的概念,是程序执行的过程,包括创建、调度、消亡,它是程序执行和资源管理的最小单位。每一个进程创建或者是开启的时候,操作系统都会给当前进程分配虚拟内存,一个操作系统中的所有进程的虚拟内存空间都是一样大的,这样便于操控,但是并不意味着对应的物理内存一样大,实际使用多少空间,最终再将其映射到物理内存上。

父进程:ppid(进程号)

子进程:pid (进程号)

特殊的进程:

        0号进程:在内核空间,是内核运行的第一个进程

        1号进程:init进程,是所有进程的祖先

Linux系统中的进程类型:

交互进程:

        是由shell控制和运行的,它既可以在前台运行,也可以在后台运行

批处理进程:

        它不属于某个终端,它被提交到一个队列中以便顺序执行

守护进程:

        它在后台运行,一般在Linux启动是开始执行,系统关闭时才结束

进程的调度机制:

        时间片轮转,上下文切换


二、进程的操作

查看命令

ps命令:


    ps        查看系统中进程以及子进程的信息
    ps aux    查看系统中所有的进程的信息

        信息如下:
        USER   PID   %CPU   %MEM   VSZ   RSS   TTY   STAT   START   TIME   COMMAND
        USER: 	 进程用户
        PID:	 当前进程进程号
        %CPU:    占用的 CPU 使用率
        %MEM:    占用的记忆体使用率
        VSZ:     占用的虚拟记忆体大小
        RSS:     占用的记忆体大小
        TTY:     终端的次要装置号码 
        STAT:    该进程的状态
        START:   进程开始时间
        TIME:    执行的时间
        COMMAND:所执行的指令
    ps ajx    查看系统中所有的进程的信息
        
        信息如下:
        PPID    PID    PGID    SID   TTY  TPGID   STAT   UID   TIME   COMMAND
        PPID:	父进程进程号
        PID: 	当前进程进程号
        PGID:	进程组号
        SID: 	会话者ID
        TTY: 	终端的次要装置号码 (minor device number of tty)
        TPGID: 进程连接到的终端上的前台进程组的ID,如果进程未连接到终端,则为-1,表示守护进程
        STAT: 	 该进程的状态
        UID:	 进程拥有者id
        TIME:    执行时间
        COMMAND: 所执行的指令

进程的状态

D                    静止态
R                    运行态
S                    睡眠态
T                    停止态
Z                    僵尸态
+                    前台进程
<                    高优先级的进程
l                    多进程的
s                    会话组组长

进程相关函数

fork()
    
    头文件:
            #include <sys/types.h>
            #include <unistd.h>
    标准:
            pid_t fork(void);
    功能:    
            创建一个子进程
    参数:
            没有(void空类型)
    返回值:
            成功:
                >0    子进程的进程号,标识父进程的代码区
                0     标识子进程的代码区
            失败:
                -1
getpid( )/getppid( )

头文件:
        #include <sys/types.h>
        #include <unistd.h>

标准:
        pid_t getpid(void);
        pid_t getppid(void);
功能:
        获取当前进程的进程号
        获取当前进程的父进程的进程号
        
_exit

头文件:
        #include <unistd.h>

标准:
        void _exit(int status);

功能:
        结束一个进程
参数:
        status:退出状态值,父进程通过wait函数可以获取到这个值
                如果不返回状态,设置0,表示正常退出,非0表示错误退出
返回值:
        无


_exit属于系统调用,不会刷新缓冲区
exit

头文件:
        #include <stdlib.h>
标准:
        void exit(int status);
功能:
        结束一个进程
参数:
        status:退出状态值,父进程通过wait函数可以获取到这个值
                如果不返回状态值,设置0表示正常退出,非0表示错误退出
返回值:
        无
atexit

头文件:
        #include <stdlib.h>
标准:
        int atexit(void(*function)(void));
功能:    
        注册一个函数,当进程结束时执行
参数:
        functionn:要执行的函数的首地址,就是传函数名
返回值:
        成功:0
        失败:非0

特殊的进程

孤儿进程

        父进程结束,子进程就成为了孤儿进程,会又1号进程领养

僵尸进程

        子进程结束,但没有完全释放内存,该进程就称为了僵尸进程

守护进程

        守护进程常常在系统启动时开始运行,在系统关闭时终止。

        守护进程也会是我们所说的    Daemon进程,是Linux中的后台服务进程。

                                                                                                                    华清远见学习总结 (2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值