xml地图|网站地图|网站标签 [设为首页] [加入收藏]
车辆工程,Linux内核学习笔记
分类:操作系统

阿里云yum源速度快而且稳定,下面给出配置方法

(1101001.101)2=(105.625)10=(151.5)8=(69.A)16
(357.25)10=(101100101.01)2=(545.2)8=(165.4)16
(9C4D.52A)16=(101110001001101.01010010101)2=(116115.2452)8
(4763.15)=(10011110011.001101)2=(2547.203125)10=(9F3.34)16

一、 进程创建:

  • 打开centos的yum文件夹

    cd /etc/yum.repos.d/

  • 用wget下载repo文件

    wget 

  • 备份系统原来的repo文件

    mv CentOS-Base.repo CentOS-Base.repo.bak

  • 替换系统原来的repo文件

    mv Centos-7.repo CentOS-Base.repo

  • 澳门新葡亰手机版,执行yum源更新命令(依次执行)

    yum clean all 
    yum makecache 
    yum update

澳门新葡亰手机版 1澳门新葡亰手机版 2澳门新葡亰手机版 3澳门新葡亰手机版 4澳门新葡亰手机版 5澳门新葡亰手机版 6澳门新葡亰手机版 7澳门新葡亰手机版 8澳门新葡亰手机版 9

  Unix 下的进程创建很特别,与许多其他操作系统不同,它分两步操作来创建和执行进程: fork() 和 exec() 。首先,fork() 通过拷贝当前进程创建一个子进程;然后,exec() 函数负责读取可执行文件并将其载入地址空间开始运行。

等待一段时间,配置完毕,可以开心地使用yum命令了。

1、fork() :kernel/fork.c

  在Linux系统中,通过调用fork()来创建一个进程。调用 fork() 的进程称为父进程,新产生的进程称为子进程。在该调用结束时,在返回点这个相同的位子上,父进程恢复执行,子进程开始执行。fork()系统调用从内核返回两次:一次返回到父进程,另一次返回到新产生的子进程。使用fork()创建新进程的流程如下:

  1)fork() 调用clone;

  2)clone() 调用 do_fork();

  3)do_fork() 调用 copy_process() 函数,copy_process() 函数将完成第 4-11 步;

  4)调用 dup_task_struct() 为新进程创建一个内核栈、thread_info结构和task_struct,这些值与当前进程的值相同;

  5)检查并确保新创建这个子进程后,当前用户所拥有的进程数目没有超出给它分配的资源的限制;

  6)清理子进程进程描述符中的一些成员(清零或初始化,如PID),以使得子进程与父进程区别开来;

  7)将子进程的状态设置为 TASK_UNINTERRUPTIBLE,保证它不会投入运行;

  8)调用 copy_flags() 以更新 task_struct 的 flags 成员;

  9)调用 alloc_pid() 为新进程分配一个有效的 PID;

10)根据传递给clone() 的参数标志,copy_process() 拷贝或共享打开的文件、文件系统信息、信号处理函数、进程地址空间和命名空间等;

11)做一些扫尾工作并返回一个指向子进程的指针。

12)回到 do_fork() 函数,如果 copy_process() 函数成功返回,新创建的子进程将被唤醒并让其投入运行。

  下面用一段简单的代码演示一下 fork() 函数:

  1 #include <unistd.h>
  2 #include <stdio.h>
  3 
  4 int main(){
  5     pid_t fpid;
  6     int count= 0;
  7     fpid = fork();              // fpid 为fork()的返回值
  8     if(fpid < 0){               // 当fork()的返回值为负值时,表明调用 fork() 出错
  9         printf("error in fork!");
 10     }
 11     else if(fpid  == 0){        // fork() 返回值为0,表明该进程是子进程
 12         printf("this is a child process, the process id is %dn",getpid());
 13         count++;
 14     }
 15     else{                       // fork() 返回值大于0,表明该进程是父进程,这时返回值其实是子进程的PID
 16         printf("this is a father process, the process id is %dn",getpid());
 17         count++;
 18     }
 19     printf("计数 %d 次n",count);
 20     return 0;                                                                          
 21 }

输出结果:

本文由澳门新葡亰手机版发布于操作系统,转载请注明出处:车辆工程,Linux内核学习笔记

上一篇:没有了 下一篇:批量处理替换文件夹名中指定字符串,车辆工程
猜你喜欢
热门排行
精彩图文