多任务编程

一、 进程(fork())

1.程序的一次执行过程(进程是程序的一个实例)

2.程序和进程:程序在硬盘上,进程在内存里。

(1)进程是跑起来的程序。

(2)一个程序可以对应多个进程。

程序-----静态------硬盘

进程------动态------内存(为了描述和管理程序运行的动态过程)

PCB  (Process Control Block)

3.程序的构成:代码   +   数据(数据区:栈、堆、字符串常量区、静态区)(代码区)

a.out:可执行程序

.c:     程序源代码

4.进程状态

三态 模型 ------操作系统理论

linux系统

R------运行或可运行(就绪态)

S------可中断的睡眠态

D------不可中断的睡眠态

T------暂停

Z------僵尸态

5.进程(创建进程,执行任务 (1).跟父进程相同的任务          fork 
  (2).有自己的任务要做   比如: shell执行命令  fork + exec 
进程结束 
  exit()
  (1).孤儿进程 --- 没有父亲  
  (2).僵尸进程 --- 有父亲,但是自己先挂了 )

(1)进程的状态:就绪-执行-阻塞态(等待,睡眠)基本操作系统

(2)linux中:运行态,睡眠态,僵尸,暂停态

(3)进程的调度(内核的主要功能之一):宏观并行,微观串行

6.查询进程相关命令
    1.ps aux | grep 进程名 

    查看进程相关信息

        1.就绪态、运行态    R
        2.睡眠态、等待态    
          可唤醒等待态    S
           不可唤醒等待态    D
        3.停止态    T
        4.僵尸态    Z
        5.结束态    

    2.top
    根据CPU占用率查看进程相关信息

    3.kill和killall发送一个信号
    kill PID
    发送信号+PID对应的进程,默认接收者关闭
    kill -9 进程PID号 
    kill -l //查看信号列表 
    killall -9 进程名
    发送信号 进程名对应的所有进程
    killall a.out //通过 进程名 发信号 
    kill 信号编号 进程ID 
    7.

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

    返回值:int 类型的数字。
            在父进程中:成功 返回值是子进程的pid号 >0
                        失败 返回-1;
            在子进程中:成功 返回值 0
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值