作业要求
自学教材第3章,提交学习笔记(10分),评分标准如下 1. 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容 (4分) “我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题” 核心是要求GPT:“请你以苏格拉底的方式对我进行提问” 然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?” 如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?” GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。 2. 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分) 3. 实践过程截图,代码链接(2分) 4. 其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)(1分)
一、课本第三章内容总结
进程的概念
进程是对映像的执行
每个进程用一个独特的数据结构表示,叫做进程控制块(PCB)或任务控制块(TCB)。该结构体中包含某个进程的所有信息。其中有
int *ksp
int pid
int status
等内容。ksp位指向下一个结构体的指针。
多任务处理系统
type.h文件定义了系统常数和表示进程的简单PROC结构体。
ts.s文件在32位GCC汇编代码中可实现进程上下文切换。
queue.c文件可以实现队列和链表操作函数。
t.c文件定义了MT系统数据结构、系统初始化代码和进程管理函数。
MT系统基本代码介绍
(1)gcc -m32 t.c ts.s
然后运行a.out,可以让整个MT系统在用户模式下作为Linux进程运行。
(2)init()
初始化系统。
(3)kfork()
创建优先级位1的子进程。
后续还有五个步骤,持续完成多任务处理系统。
进程同步
睡眠模式
某进程需要某些目前没有的东西时,会进入休眠,为实现休眠,可以通过添 加event字段,并实现ksleep(int event)函数。
唤醒操作
kwakeup(event)
MT系统的进程管理
实现MT系统的进程管理函数
(1)用二叉树形式实现进程家族树
(2)实现ksleep()和kwakeup()进程管理函数
(3)实现kexit()和kwait()进程管理函数
(4)添加“w”命令
进程管理的系统调用
fork()
int pid = fork() fork()
创建子进程并返回子进程的pid。 在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。
wait()
int wait(int *status)
如果父进程调用了wait就阻塞自己,然后wait来分析某个子进程是否已经退 出,并收集其信息然后彻底销毁。
exec()
用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行
exit()
int atexit(void (*func)(void));
进程的执行模式
中断:中断是外部设备发送给 CPU的信号,请求CPU服务。
陷阱:陷阱是错误条件,例如无效地址、非法指令、除以0等、这些错误条件被CPU识别为异常,使得CPU进入 Kmode 来处理错误。
系统调用:系统调用(简称syscall)是一种允许Umode 进程进入Kmode 以执行内核函数的机制。如果发生错误,外部全局变量 errno(在errno. h中)会包含一个ERROR代码,用于标识错误。用户可使用库函数perror( "error message");
二、苏格拉底挑战
三、学习代码
标签:函数,MT,int,系统,笔记,第六周,GPT,20211303,进程 From: https://www.cnblogs.com/liTCabcAbc/p/17781231.html