一、任务详情
自学教材第3章,提交学习笔记(10分),评分标准如下
- 知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容 (4分)
“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”
核心是要求GPT:“请你以苏格拉底的方式对我进行提问”
然后GPT就会给你提问,如果不知道问题的答案,可以反问AI:“你的理解(回答)是什么?”
如果你觉得差不多了,可以先问问GPT:“针对我XXX知识点,我理解了吗?”
GPT会给出它的判断,如果你也觉得自己想清楚了,可以最后问GPT:“我的回答结束了,请对我的回答进行评价总结”,让它帮你总结一下。
- 问题与解决思路,遇到问题最先使用chatgpt等AI工具解决,并提供过程截图(3分)
- 实践过程截图,代码链接(2分)
- 其他(知识的结构化,知识的完整性等,提交markdown文档,使用openeuler系统等)(1分)
二、知识点归纳
1.第三章
3.1 多任务处理
多任务处理指的是同时进行几项独立活动的能力,这是所有操作系统的基础,也是并行编程的基础。多任务处理是通过在不同任务之间多路复用CPU的执行时间来实现的,即将CPU执行操作从一个任务切换到另一
个任务。
3.2 进程的概念
在操作系统中,任务也称为进程。进程是对映像的执行。
操作系统内核将一些列执行视为使用系统资源的单一实体,包括内存空间、I/O设备以及最重要的CPU时间,每个进程用一个独特的数据结构表示,叫做进程控制块或任务控制块。
3.3 多任务处理系统
多任务处理系统简称MT,由以下几个部分组成。
- type.h文件
定义了系统常数和表示进程的简单PROC结构体。 - ts.s文件
在32位GCC汇编代码中可实现进程上下切换。 - queue.c文件
可实现队列和链表操作函数。enqueue()函数按优先级将PROC输入队列中。在优先级队列中,具有相同优先级的进程按先进先出的顺序排序。dequeue()函数可返回从队列或链表中删除的第一个元素。printList()函数可打印链表元素。 - t.c文件
t.c文件定义MT系统数据结构、系统初始化代码和进程管理函数。
3.4 进程同步
程同步是多任务处理中的一个重要问题,它涉及到如何协调多个进程的执行,以避免竞争和冲突。
- 睡眠模式:当一个进程需要等待某个事件发生时,它可以进入睡眠模式。这是通过将进程的状态设置为休眠,并等待事件的发生来实现的。
- 唤醒操作:当事件发生时,另一个进程或中断处理程序可以调用唤醒函数,将等待中的进程从休眠状态唤醒,继续执行。
- 进程终止:进程可以以正常终止或异常终止的方式结束执行。正常终止是通过调用exit()系统调用来实现的,而异常终止可能涉及信号处理。
3.5 进程终止
进程能以两种方式终止:
- 正常终止:进程调用exit,发出_exit(value)系统调用来执行在操作系统内核中的kexit(value)
- 异常终止:进程因某个信号而异常终止
进程家族树:进程可以以树状结构组织,其中父进程可以创建子进程,形成家族关系。
3.6 MT系统中的进程管理
- 用二叉树的形式实现进程家族树
- 实现ksleep()和kwakeup()进程同步函数
- 实现kexit()和kwait()进程管理函数
- 添加“w”命令来测试和演示等待操作
3.7 Unix/linux中的进程
-
进程来源:当操作系统启动时,操作系统内核的启动代码会强行创建一个PID=0的初始进程。然后系统执行它。在初始化系统后,P0复刻一个子进程P1,并把进程切换为以用户模式运行P1。
-
INIT和守护进程:P1的大部分子进程都是用来提供系统服务的。它们在后台运行,不与任何用户交互。它们被称为守护进程。
-
登录进程:除了守护进程,P1复刻了许多登录进程,每个终端上一个,用于用户登录。每个登录进程打开三个与自己的终端相关联的文件流(stdin, stdout, stderr).
-
sh进程:用户登录后,通常会启动一个shell进程,它负责解释和执行用户的命令。Shell进程会创建子进程来执行用户命令,然后等待子进程的终止状态。
-
进程执行模式:进程可以以不同的执行模式运行,包括中断、陷阱和系统调用。中断和陷阱用于响应外部事件和错误条件,而系统调用用于执行内核函数。
3.9 I/O重定向
-
文件流和文件描述符:每个文件流对应Linux内核中一个打开文件。它们都用一个文件描述符表示。
stdin、stdout、stderr的文件描述符分别为0、1、2。 -
管道与管道命令:管道是用于进程交换数据的单向进程间同此你通道。有一个读取端和一个写入端。
在Unix/Linux中,命令行cmd1|cmd2包含一个管道符号“|”。Sh将通过一个进程运行cmd1,另一个运行cmd2
2.苏格拉底挑战
2.
二、问题与解决思路
问题
(1)I/O重定向和管道通信的联系和区别是什么?
解决思路