当前位置: 首页 > news >正文

分析网站的网站海报设计模板网站

分析网站的网站,海报设计模板网站,网站建设品牌公司,做网站月薪资多少文章目录 什么是进程呢#xff1f; 描述进程-PCBtask_struct-PCB的一种task_struct内容分类 查看进程通过系统目录查看通过ps命令查看通过系统调用获取进程的PID和PPID通过系统调用创建进程- fork#xff08;#xff09;函数 fork()函数fork函数做了什么#xff1f;fork之后… 文章目录 什么是进程呢 描述进程-PCBtask_struct-PCB的一种task_struct内容分类 查看进程通过系统目录查看通过ps命令查看通过系统调用获取进程的PID和PPID通过系统调用创建进程- fork函数 fork()函数fork函数做了什么fork之后父子进程谁先运行fork函数的返回值为什么fork会有两个返回值fork的两个返回值 什么是进程呢 运行起来的程序吗 课本概念 程序的一个执行实例正在执行的程序等。 内核观点 担当分配系统资源CPU时间内存的实体。 对于我们所写的代码在进行编译链接之后形成的.exe可执行程序文件这个可执行程序本质上是一个文件是放在磁盘上的。当我们运行这个可执行程序时本质上是将这个程序加载到内存当中了因为只有加载到内存后CPU才能对其进行逐行的语句执行而一旦将这个程序加载到内存后我们就不应该将这个程序再叫做程序了严格意义上将应该将其称之为进程。 其实在我们的程序加载到内存之前操作系统早已经加载到内存中而程序是操作系统将其进行加载拷贝到内存当中的。 描述进程-PCB pcb全程为process control block 进程信息被放在一个叫做进程控制块的数据结构中可以理解为进程属性的集合。 课本上称之为PCBprocess control blockLinux操作系统下的PCB是: task_struct。 我们知道在操作系统中会同时存在多个进程 那么操作系统如何管理呢 结合前面的知识我们知道 应该先描述再组织。操作系统是用C语言写的所以操作系统要想管理进程那么就必须用C语言来描述进程通过进程的各种重要属性来描述进程我们很容易想到结构体。这么多进程结构体里面可以放一些结构体指针将他们链接起来那么对进程的管理就转变成了对链表的增删查改。 所以进程可执行程序内核数据结构PCB task_struct-PCB的一种 在Linux中描述进程的结构体叫做task_struct。 task_struct是Linux内核的一种数据结构它会被装载到RAM(内存)里并且包含着进程的信息。 task_struct内容分类 task_struct就是Linux当中的进程控制块task_struct当中主要包含以下信息 标示符 描述本进程的唯一标示符用来区别其他进程。状态 任务状态退出代码退出信号等。优先级 相对于其他进程的优先级。程序计数器(pc) 程序中即将被执行的下一条指令的地址。内存指针 包括程序代码和进程相关数据的指针还有和其他进程共享的内存块的指针。上下文数据 进程执行时处理器的寄存器中的数据。I/O状态信息 包括显示的I/O请求分配给进程的I/O设备和被进程使用的文件列表。记账信息 可能包括处理器时间总和使用的时钟总和时间限制记账号等。其他信息。 查看进程 通过系统目录查看 根目录下有一个proc的系统文件夹。 文件夹当中包含大量进程信息其中有些子目录的目录名为数字。 这些数字其实是某一进程的PID对应文件夹当中记录着对应进程的各种信息。 通过ps命令查看 ps aux 通过系统调用获取进程的PID和PPID 通过使用系统调用函数getpid和getppid即可分别获取进程的PID和PPID。 我们可以通过一段代码来进行测试。 #include stdio.h #include sys/types.h #include unistd.hint main() {while(1){printf(我是一个进程我的pid是: %d, ppid: %d\n, getpid(), getppid()); // 这个函数只调用了一次sleep(1); }retrun 0; }我们可以通过ps命令查看该进程的信息即可发现通过ps命令得到的进程的PID和PPID与使用系统调用函数getpid和getppid所获取的值相同。 通过系统调用创建进程- fork函数 fork函数创建子进程 fork是一个系统调用级别的函数其功能就是创建一个子进程。 运行以下代码 #include stdio.h #include sys/types.h #include unistd.hint main() {fork();while(1){printf(我是一个进程我的pid是: %d, ppid: %d\n, getpid(), getppid()); // 这个函数只调用了一次sleep(1); // for test}return 0; }运行结果是循环打印两行数据第一行数据是该进程的PID和PPID第二行数据是代码中fork函数创建的子进程的PID和PPID。我们可以发现fork函数创建的进程的PPID就是proc进程的PID也就是说proc进程与fork函数创建的进程之间是父子关系。 每一个进程操作系统就会为其创建PCBfork函数创建的进程也是如此。 fork()函数 fork函数做了什么 上面谈到父进程跟子进程会共享代码和数据会执行相同的代码那么fork之前的代码呢子进程能看到吗 答案是可以看到。 为什么子进程不从头开始执行呢 因为我们的程序从上往下按照顺序去执行pc/eip寄存器执行fork完毕eip指向的是fork后续的代码而eip也会被子进程继承。所以只执行从fork之后的代码。 fork之后父子进程谁先运行 创建完成子进程之后系统的其他进程父进程子进程接下来是要被CPU调度执行的当父子进程的PCB都被创建并在运行队列中排队的时候哪一个进程先运行是不确定的因为哪一个进程的PCB先被CPU选择调度哪个进程就先运行然后谁会先被调度是由各自PCB中的调度信息比如说 时间片优先级等调度器算法共同决定的所以谁先运行是没有明确答案的。 fork函数的返回值 1、如果子进程创建成功在父进程中返回子进程的PID而在子进程中返回0。 2、如果子进程创建失败则在父进程中返回 -1。 既然父进程和子进程获取到fork函数的返回值不同那么我们就可以据此来让父子进程执行不同的代码从而做不同的事。 #include stdio.h #include sys/types.h #include unistd.hint main() {printf(我是一个父进程,我的pid: %d\n, getpid());pid_t id fork();// fork之后用if进行分流if(id 0) return 1;else if(id 0){// childwhile(1){printf(我是子进程: pid: %d, ppid:%d, ret: %d, 我正在执行下载任务, id: %p\n, getpid(), getppid(), id, id);sleep(1);}}else{// parentwhile(1){printf(我是父进程: pid: %d, ppid:%d, ret: %d, 我正在执行播放任务, id: %p\n, getpid(), getppid(), id, id);sleep(1);}} }fork创建出子进程后子进程会进入到 else if 语句的循环打印当中而父进程会进入到 else 语句的循环打印当中。 为什么fork会有两个返回值 Q:如果一个函数执行到了return语句那么他的工作结束了吗 A:是的结束了。 子进程跟父进程代码和数据会共享那么return之前子进程已经被创建出来了而return 语句也是代码所以return 语句也会被子进程共享所以父进程子进程被调度都会执行return 语句从而造成了fork函数有两个返回值。 fork的两个返回值 Q:为什么fork的两个返回值会给父进程返回子进程的pid给子进程返回0呢 在现实生活中一个爹可以对应多个子女BUT儿子只能对应一个爹需要管理子女所以需要得到子女的信息也就是子进程的pid而对于子女来说只需要管理好自己就可以所以不需要得到任何信息即返回0 Q:如何理解同一个变量会有不同的值 A:如果启动一个qq启动微信启动浏览器kill掉微信,qq还在、浏览器还在 如果父子进程父进程被杀掉子进程还在吗子进程被杀掉父进程还在嘛 答案是还在 结合以上两点我们可以推出进程之间运行的时候是具有独立性的 进程的独立性首先是表现在有各自的PCB进程之间不会相互影响 而代码又是只读的不会影响但是数据父子进程是会修改的代码共享数据各个进程必须想办法各自私有一份。 但是一般如果不对数据进行写入的话数据是不会发生拷贝的只有当写入时才会进行拷贝也就是写时拷贝。 总上我们得出了一个结论这个我们以为的同一个地址一定不是简单的物理地址。
http://www.zqtcl.cn/news/945171/

相关文章:

  • 网站建设技术外包西安推荐企业网站制作平台
  • 建立一个做笔记的网站石家庄网站优化
  • 服务器创建多个网站吗中铁雄安建设有限公司网站
  • 建湖建网站的公司网站建设人工费
  • 沈阳公司网站设计公司怎么投放广告
  • 上海哪家做网站关键词排名如何做简洁网站设计
  • 网站维护的内容seo网站关键词优化哪家好
  • 东阳市网站建设西安做网站选哪家公司
  • 宁津网站开发万能应用商店下载
  • 专业制作标书网站地图优化
  • 广州建网站兴田德润团队什么是网络营销详细点
  • win7建网站教程wordpress chrome插件开发
  • 免费行情软件网站下载视频公司介绍ppt制作模板
  • wordpress快速建站wordpress短代码可视化
  • 餐饮型网站开发比较好看的网页设计
  • 网站管理包括潍坊网站建设优化
  • 南开集团网站建设网站服务器搭建
  • 网络的最基本定义泰安seo网络公司
  • 国外比较好的资源网站请人做外贸网站应注意什么问题
  • 人网站设计与制作什么是销售型网站
  • 最简单网站开发软件有哪些企业电子商务网站建设问题
  • 玉林网站制作简单的网站制作代码
  • 滨州建设厅网站长沙好的做网站品牌
  • 教务系统网站建设模板下载为网站开发
  • 成都市建设招标网站加载wordpress外部文件
  • 网站做兼容处理怎么浙江seo博客
  • 设计商城的网站建设电商网站建设与管理实践
  • 怎样建一个英文网站制作视频的手机软件
  • 昆明做网站费用被骗去国外做网站网站推广
  • 京东商城网站怎么做静态网页有什么特点