中国科学技术大学:《Linux操作系统分析》课程教学资源(PPT课件讲稿)Linux的进程(1/3)

Linux的进程 嵌入式系统实验室 EMBEDDED SYSTEM LAE口RAT口RY SUZHOU INSTITUTE FOR ADVANCED STUDY OF USTC
Linux的进程

主要内容 令进程描述符 令进程切换 令进程的创建和删除 令进程调度 1958 2021/2/6 Linux操作系统分析 65 嵌入式系统实验室 EMBEDDED SYSTEM LAB口RAT口RY SU:MDU INTHUTE OR AOVANCLD STUOY D USTt
2021/2/6 Linux操作系统分析 3/65 主要内容 ❖进程描述符 ❖进程切换 ❖进程的创建和删除 ❖进程调度

进程和线程 ◇多道程序对操作系统的需求→进程 ◆进一步提高并发度,对操作系统的需求 →线程 ◆进程是执行程序的一个实例 进程和程序的区别 几个进程可以并发的执行一个程序 个进程可以顺序的执行几个程序 ◆线程和进程的区别 Linux24内核以及之前的版本都不支持线程 >2.6内核中有 thread,但仍不是线程 Linux中的线程是在用户态实现的,不是本课程的内容 ◆但 Linux内核对用户态线程有一定的辅助支持 2021/2/6 Linux操作系统分析 嵌入式系统实验室 5/65 EM日 EDDED SYSTEM LA日口 RATORY
2021/2/6 Linux操作系统分析 5/65 进程和线程 ❖ 多道程序对操作系统的需求➔进程 ❖ 进一步提高并发度,对操作系统的需求 ➔线程 ❖ 进程是执行程序的一个实例 ❖ 进程和程序的区别 ➢ 几个进程可以并发的执行一个程序 ➢ 一个进程可以顺序的执行几个程序 ❖ 线程和进程的区别 ❖ Linux 2.4内核以及之前的版本都不支持线程 ➢ 2.6内核中有thread,但仍不是线程 ❖ Linux中的线程是在用户态实现的,不是本课程的内容 ❖ 但Linux内核对用户态线程有一定的辅助支持

进程描述符 令为了管理进程,内核必须对每个进程进行清晰的 描述。 令进程描述符提供了内核所需了解的进程信息 源码 include/linux/sched.h定义 struct task struct 1958 数据结构很庞大 ●基本信息 ●管理信息 控制信息 01026: struct task struct 01027: volatile long state;/*-1 unrunnable, 0 runnable, >0 stopped * 01028: void *stack 01029: atomic_t usage 01030 unsigned int flags;/* per process flags, defined below unsigned int ptrace snDTtUIL I
2021/2/6 Linux操作系统分析 6/65 进程描述符 ❖为了管理进程,内核必须对每个进程进行清晰的 描述。 ❖进程描述符提供了内核所需了解的进程信息 ➢源码include/linux/sched.h定义 struct task_struct ➢数据结构很庞大 ⚫基本信息 ⚫管理信息 ⚫控制信息

stat ed resched counter IKE tty struct tty associated wirh the process P_pptr t struct 4.1 files struct Pointers to le descriptors mm strun thread Fainters to memory fs signal_struct files sigmask_lock 室
2021/2/6 Linux操作系统分析 7/65

Linux26进程的状态 00163 00164: Task state bitmask, note! these bits are also 00165: *encoded in fs/ proc/array c: get task stateo 00166 00167: * We have two separate sets of flags: task->state 00168: is about runnability while task ->exit state are 00169: about the task exiting Confusing, but this way 00170: modifying one set can t modify the other one by 00171:* mistake 00172: include/ linux/sched. h 00173: #define TASK RUNNING 0 00174: *define TASK INTERRUPtIble 1 00175: *define TASK UNINTERRUPTIBLE 2 00176: #define TASK STOPPED 00177: #define TASK TRACED 8 00178:/* in tsk->exit state k 00179: #define EXIT ZOMBIE 1 00180: #define EXIT DEAD 32 简单过一下,与状态相关的一些宏 00181:/ in tsk->state again 1)组合状态 00182: #define taSK dead 2)状态判断 00183:# define TAsK WAKEKILL1283)状态设置 2021/2/6 Linux操作系统分析 8/65 嵌入式系统实验室 EMBEDDED SYSTEM LAB口RAT口RY SU:MDU INTHUTE OR AOVANCLD STUOY D USTt
2021/2/6 Linux操作系统分析 8/65 Linux2.6进程的状态 简单过一下,与状态相关的一些宏 1)组合状态 2)状态判断 3)状态设置 include/linux/sched.h

进程状态转换图 一个既在的 EXIT ZOMBIE 进程调用fork 或者 来创建一个 EXIT DEAD 或者 新井程 TASK DEAD 调度器选择一个tsk: schedule call Task context switch 进程调用 do exit0 forks 终止执行 TASK RU卟G TASK RUNNING 〔就绪,但是没 〔正在运行 有在运行〕 进程被高优先级的 进程抢占 进程睡眠在等待特定事件 TASK INTERRUP TIBLE 或是资源的等待队列上 事件发生或资源可用,进 程被唤醒并被放到运 TASK UNINTERRUP TIBLE 队列上 〔等待中
2021/2/6 Linux操作系统分析 9/65 进程状态转换图 EXIT_ZOMBIE 或者 EXIT_DEAD 或者 TASK_DEAD

标识一个进程 令使用进程描述符地址 ≯进程和进程描述符之间有非常严格的一一对应关系 使得用32位进程描述符地址标识进程非常方便 ☆使用PID( Process id,PID) 每个进程的PID都存放在进程描述符的pid域中 2021/2/6 Linux操作系统分析 10/65 嵌入式系统实验室 EMBEDDED SYSTEM LAB口RAT口RY SU:MDU INTHUTE OR AOVANCLD STUOY D USTt
2021/2/6 Linux操作系统分析 10/65 标识一个进程 ❖使用进程描述符地址 ➢进程和进程描述符之间有非常严格的一一对应关系, 使得用32位进程描述符地址标识进程非常方便 ❖使用PID (Process ID,PID) ➢每个进程的PID都存放在进程描述符的pid域中

进程的PID 令进程的pid字段 01095: pid t pid; 01096 pid t tgid 00024: typedef_ kernel_pid_t pid t; include/linux/types. h 00014: typedef int kernel_pid t; includelasm-XXX/posix types YYY. h Pid最大值,参见 kernel/pid.c 0005: int pid max= PID MAX DEFAULT;顺序使用 88 00024:/ 循环使用 00025: This controls the default maximum pid allocated to a process 00026:*/ includellinux/threads. h 00027: #define PID_MAX_DEFAULT(CONFIG_BASE_SMALL 0x1000: 0x8000) 2021/2/6 Linux操作系统分析 1165 嵌入式系统实验室 EM日 EDDED SYSTEM LA日口 RATORY
2021/2/6 Linux操作系统分析 11/65 进程的PID ❖进程的pid字段 Pid最大值,参见kernel/pid.c 顺序使用 && 循环使用 include/linux/types.h include/asm-XXX/posix_typesYYY.h include/linux/threads.h

stuct pid ☆阅读 include/ inux/pid. h中 “ What is struct pid? struct upid t Try to keep pid chain in the same cacheline as nr for find pid * int n struct pid namespace *ns struct hist node pid chain: struct pid a tomic t count k lists of tasks that use this pid */ struct hlist head tasks [PiDtYPE MAX]: struct rcu head rcu unsigned int level struct upid numbers [l]; static inline pid t pid nr(struct pid *pid pid t nr =0 if (pid nr= pid->numbe rs [o].nr; 2021/2/6 Linux操作系统分析 return nri
2021/2/6 Linux操作系统分析 12/65 stuct pid ❖阅读include/linux/pid.h中 ➢“What is struct pid?
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 合肥工业大学:《数据库系统概论》课程教学资源(PPT课件)第四章 并发控制.ppt
- Phase Change Memory Aware Data Management and Application.pptx
- 《高级程序语言》课程教学资源(PPT课件讲稿)第09章 平台无关语言.ppt
- 并行算法 Parallel Algorithms(PPT讲稿)现状与展望 status and prospects.ppt
- 上海交通大学:Network Coding for Wireless Networks(PPT讲稿).pptx
- 西安电子科技大学:《现代密码学》课程教学资源(PPT课件讲稿)第七章 密码协议.pptx
- 北京大学:网络搜索引擎原理(PPT讲稿)Web Graph & Link Analysis.ppt
- 《数据结构 Data Structure》课程教学资源(PPT课件讲稿)第二章 线性表.ppt
- 大庆职业学院:《计算机网络技术基础》课程电子教案(PPT教学课件)第3章 网络体系结构与协议.ppt
- 《微型计算机原理及应用》课程教学资源(PPT课件讲稿)第6章 输入输出与中断.ppt
- 信息化技术中心:网络安全意识培训(PPT讲稿).pptx
- 徐州师范大学:《电子商务 Electronic Business》课程教学资源(PPT课件讲稿)电子商务安全实验、数字证书应用.ppt
- Generic Programming(PPT课件讲稿)Templates and Overloading.ppt
- 西安电子科技大学:《操作系统 Operating Systems》课程教学资源(PPT课件讲稿)Chapter 01 Introduction(主讲:高海昌).ppt
- 四川大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 查找 Search.ppt
- 西安电子科技大学:《现代操作系统》课程PPT教学课件(讲稿)作业管理 Job Management.ppt
- 《多媒体技术》课程教学资源(PPT课件讲稿).ppt
- 南京航空航天大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 线性表.ppt
- 《计算机文化基础》课程教学课件(PPT课件讲稿)第一章 信息技术与计算机文化.ppt
- 江苏大学:《面向对象建模技术》课程教学资源(PPT课件讲稿)第1章 UML与面向对象(主讲:林琳).ppt
- 《计算机网络》课程教学大纲 Computer Networks.pdf
- 南京大学:模型检测(PPT课件讲稿)Model Checking.pptx
- 电子科技大学:《计算机操作系统》课程教学资源(PPT课件讲稿)第四章 设备管理 Device Management and Disk Scheduling.ppt
- 湖南生物机电职业技术学院:《电子商务概论》课程教学资源(PPT课件)第八章 电子商务安全.ppt
- 《操作系统》课程PPT教学课件(英文)内存管理 Memory Management.ppt
- 上海交通大学:IT项目管理(PPT讲稿)讲座6 软件项目工作量估算.ppt
- 四川大学:《数据库技术》课程教学资源(PPT课件讲稿)第9章 数据库系统开发工具VB.ppt
- 合肥学院:《数据库原理与应用》课程教学资源(PPT课件)第4章 数据库的创建与管理.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第3章 流水线技术.ppt
- 系统软件与软件安全(PPT讲稿)构造安全、高效的系统软件.pptx
- 计算机问题求解(PPT讲稿)图的计算机表示以及遍历.pptx
- 《The C++ Programming Language》课程教学资源(PPT课件讲稿)Lecture 03 Standard Template Library & Generic Programming.ppt
- Scanning Electron Microscopy(SEM).ppt
- 《C语言程序设计》课程教学资源(PPT课件)第6章数据类型和表达式.ppt
- 面向对象编程 Object-Oriented Programming(PPT课件讲稿)继承 Inheritance.ppt
- 《单片机应用技术》课程PPT教学课件(C语言版)第7章 定时器/计数器.ppt
- 清华大学:《计算机导论》课程电子教案(PPT教学课件)第8章 计算机领域的典型问题.ppt
- 《网站设计与建设 Website design and developments》课程教学资源(PPT课件讲稿)第三部分 网站设计技术 第10章 HTML基础.ppt
- 山东大学:《面向对象程序设计》课程教学资源(PPT课件讲稿)第四章 编写对象接口.ppt
- 中国科学技术大学:《机器学习》课程PPT教学课件(讲稿)第二章 模型评估与选择.pptx