朱荟潼 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课http://mooc.study.163.com/course/USTC 1000029000

第六周 进程的描述和进程的创建

一、 进程的描述

1、 进程控制块PCB——task_struct

1.操作系统的三大管理功能包括

进程管理
内存管理
文件系统

2.PCB task_struct中包含

进程状态
进程打开的文件
进程优先级信息

3.通过唯一的进程标识PID来区别每个进程。

4.进程状态

5.理解task_struct数据结构



二、 进程的创建

1.分析fork函数。

2.创建一个新进程

通过调用fork()来创建一个新进程----->通过复制当前进程来实现的------>先复制一个PCB——task_struct------>再给新进程分配一个新的内核堆栈------>修改复制过来的进程数据(如pid、进程链表等)

3.新进程执行起点:return_from_fork,只复制了内核堆栈一部分,int指令和save_all压到内核栈的内容,参数、系统调用号等都进行压栈。

三、实践

使用gdb跟踪创建新进程



由于虚拟机是32位转化为64位发生溢出现象。


总结

创建一个新进程在内核中的执行过程

1.使用系统调用clone、fork、vfork均可创建一个新进程,但都是通过调用do_fork来实现进程的创建;
2.复制父进程PCB--task_struct来创建一个新进程,要给新进程分配一个新的内核堆栈;
3.修改复制过来的进程数据,比如pid、进程链表等等执行copy_process和copy_thread
4.p->thread.sp = (unsigned long) childregs; //调度到子进程时的内核栈顶p->thread.ip = (unsigned long) ret_from_fork; //调度到子进程时的第一条指令地址

转载于:https://www.cnblogs.com/zzzz5/p/5330144.html

20135337朱荟潼 Linux第六周学习总结——进程的描述和进程的创建相关推荐

  1. 20135337朱荟潼 Linux第八周学习总结——进程的切换和系统的一般执行过程

    第八周 进程的切换和系统的一般执行过程 一.进程切换关键代码switch_to 1.不同类型进程有不同调度需求--两种分类 2.调度策略--规则 Linux中进程优先级是动态的,周期性调整. 3.时机 ...

  2. 20135337朱荟潼 Linux第二周学习总结——操作系统是如何工作的

    一.计算机是如何工作的--总结 三个法宝 存储程序计算机.函数调用堆栈.中断机制 二.堆栈 1.是c语言程序运行时必须的一个记录调用路径和参数的空间. 函数调用框架.传递参数.保存返回地址.提供局部变 ...

  3. Linux第六周学习总结——进程额管理和进程的创建

    Linux第六周学习总结--进程额管理和进程的创建 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/cour ...

  4. 20135337朱荟潼——实验三

    实验三 敏捷开发与XP实践 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程. ...

  5. 2018-2019-1 20165214 《信息安全系统设计基础》第六周学习总结

    20165214 2018-2019-1 <信息安全系统设计基础>第六周学习总结 教材学习内容总结 1.输入操作是从I/O设备复制数据到主存,而输出操作是从主存复制数据到I/O设备 2.U ...

  6. 2018-2019-1 20165203 《信息安全系统设计基础》第六周学习总结

    2018-2019-1 20165203 <信息安全系统设计基础>第六周学习总结 教材学习内容总结 重要知识点 I/O:在主存和外部设备(例如磁盘存储器.终端和网络)之间复制数据的过程. ...

  7. 20155322 2017-2018-1《信息安全系统设计》第六周学习总结

    # 20155322 2017-2018-1<信息安全系统设计>第六周学习总结 教材学习内容总结 第八章: 什么是异常控制流: 控制流:控制转移序列. 控制转移:从一条指令到下一条指令. ...

  8. 20159313网络攻击与防范第六周学习总结

    课本第五章TCP/IP网络协议攻击总结 1.网络安全属性 网络安全是指网络系统的硬件.软件及其系统受到保护,不受偶然的或者恶意的原因而遭到破坏.更改.泄漏,系统连续可靠正常运行,网络服务不被中断.网络 ...

  9. 20169212 2016-2017-2 《网络攻防实践》第六周学习总结

    20169212 2016-2017-2 <网络攻防实践>第六周学习总结 教材学习内容总结 本周学习了第五.六章内容,主要包含TCP/IP网络协议攻击及网络安全防范技术.了解了TCP/IP ...

最新文章

  1. MySQL 学习笔记(5)— 视图优缺点、创建视图、修改视图、删除视图
  2. Android应用内展示word、excel、pdf、ppt等文件
  3. python传参是传值还是传引用
  4. 详解WordPress中简码格式标签编写的基本方法
  5. java实现jsonscheme_java – jsonschema和日期类型
  6. macos剪切_如何使用macOS的内置“ Kill and Yank”作为替代剪切和粘贴
  7. A Greeting from Qinhuangdao Gym - 102769A 2020ccpc秦皇岛分站赛
  8. java云端部署_Jelastic Java云端平台
  9. 专注数据,打造阿里云Elasticsearch“一站式”数据服务体系
  10. 直播预告丨新时代Oracle DBA成长记-探索故障根源之美
  11. struts拦截器+注解实现网络安全要求中的日志审计功能
  12. 键盘可以实现向计算机输入数据判断,计算机应用基础—学习指南.docx
  13. HTMLTestRunner文件
  14. java 按符号分割字符串_JAVA字符串按分隔符号字符串分割
  15. 向量的数量积,向量积,混合积
  16. 使用RssHub为网页生成RSS订阅源
  17. 在Java应用程序中将PDF转换为图片和将图片转换为PDF
  18. Django创建APP
  19. --scrapy爬虫--
  20. Java中 \n \f \r \t 含义

热门文章

  1. js实现简单打地鼠小游戏
  2. access查询mysql_Access数据库 如何创建查询
  3. mongodb mysql配置_Mongodb 配置
  4. Codeforce 1335C - Two Teams Composing 统计技能种类数量+统计同一技能最大数量
  5. 【空指针异常,也不全是。】
  6. linux下一键部署mysql_linux下一键编译搭建mysql服务器脚本
  7. django ajax传递数组
  8. 甘肃地形图之陇右地形分析、DEM数据下载
  9. 理解java中的反射
  10. 如何用python拷贝文件