fork exec

Unix创建新进程的唯一方法为fork。一个进程想要执行另一个程序,需要先fork,fork的子进程再调用exec函数族把自身替换成新程序。除此之外,Linux还提供了clone系统调用,clone的工作原理基本上与fork相同,但新进程不是独立于父进程的,而可以与其共享某些资源。可以指定需要共享和复制的资源种类,例如,父进程的内存数据、打开文件或安装的信号处理程序。clone用于实现线程,但仅仅该系统调用不足以做到这一点,还需要用户空间库才能提供完整的实现。

#include <stdio.h>
#include <unistd.h>

int main() {
    pid_t pid; //定义进程号,实际上是int类型
    pid = fork();
    if(pid  == 0) //返回子进程
    {
        //获取目前进程的进程识别码
        printf("child pid: %d\n", getpid());
    } else {
        printf("pid: %d\n", pid);//父进程中返回子进程的pid
        printf("father pid: %d\n", getpid());
    }
}

返回结果:

pid: 3381
father pid: 3380
child pid: 3381

用户态切换到核心态的两种方式:系统调用(主动调用)和中断(自动触发)

如果系统处于核心态并正在处理系统调用,那么系统中的其他进程是无法夺取其CPU时间的。 调度器必须等到系统调用执行结束,才能选择另一个进程执行,但中断可以中止系统调用。中断具有最高优先级,因为在中断触发后需要尽快处理。

rss和res意思一样。一个是ps里,一个是top里的

nice值:表示进程可被执行的优先级的修正数值,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行。

Linux提供资源限制(resource limit,rlimit)机制,对进程使用系统资源施加某些限制。
/proc/$pid/limits

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值