首页 > 其他分享 >学习笔记六

学习笔记六

时间:2023-10-22 22:44:57浏览次数:38  
标签:文件 调用 系统 笔记 学习 管道 进程 CPU

知识点归纳

多任务处理

  • 在单处理器系统中,一次只能执行一个任务。多任务处理是通过在不同任务之间多路复用CPU的执行时间来实现的。它是所有操作系统的基础。
  • 逻辑并行性称为“并发”;

进程

  • 进程是对映像的执行。

多任务处理系统(MT)

组成部分:

  • type.h文件:定义了系统常数和表示进程的简单PROC结构体
  • ts.s文件:在32位GCC汇编代码中可实现进程上下文切换
  • queue.c文件:可实现队列和链表操作函数
  • t.c文件:t.c文件定义MT系统数据结构、系统初始化代码和进程管理函数

进程同步

睡眠模式

当某进程需要某些当前没有的东西时,例如申请独占一个存储区域、等待用户通过标准输入来输入字符等,它就会在某个事件值上进人休眠状态,该事件值表示休眠的原因。

唤醒操作

多个进程可能会进人休眠状态等待同一个事件,这是很自然的,因为这些进程可能都需要同一个资源,例如一台当前正处于繁忙状态的打印机。在这种情况下,所有这些进程都将休眠等待同一个事件值。当某个等待时间发生时,另一个执行实体(可能是某个进程或中断处理程序)将会调用kwakeup(even),唤醒正处于休眠状态等待该事件值的所有程序。如果没有任何程序休眠等待该程序,kwakeupO就不工作,即不执行任何操作。注意,被唤醒的进程可能不会立即运行。它只是被放入readyQueue中,排队等待运行。当被唤醒的进程运行时,如果它在休眠之前正在试图获取资源,那么它必须尝试重新获取资源。这是因为该资源在它运行时可能不再可用。ksleepO和kwakeupO函数一般用于进程同步,但在特殊情况下也用于同步父进程和子进程。

进程终止

  • 正常终止:进程调用exit(value),发出_exit(value)系统调用来执行在操作系统内核
    中的kexit(value),这就是我们本节要讨论的情况。
  • 异常终止:进程因某个信号而异常终止。信号和信号处理将在后面第6章讨论。在这两种情况下,当进程终止时,最终都会在操作系统内核中调用kexi()。

Unix/Linux中的进程

  • 中断:中断是外部设备发送给CPU的信号,请求CPU服务。当在Umodie下执行时,CPU中断是启用的,因此它将响应任何中断。在中断发生时,CPU将进入Kmode来处理中断,这将导致进程进人Kmode。
  • 陷附:陷是错误条件,例如无效地址、非法指令、陈以0等、这些错误条件被CPU识别为异常,使得CPU进人Kmode来处理错误。在Unix/Linux中,内核陷阴处理程序将陷研原因转换为信号编号,并将信号传递给进程。对于大多数信号,进程的默认操作是终止。
  • 系统调用:系统调用(简称syscall)是一种允许Umode进程进入Kmode以执行内核函数的机制。当某进程执行完内核函数后,它将期望结果和一个返回值返回到Umode,该值通常为0(表示成功)或-1(表示错误)。如果发生错误,外部全局变量errno(在erno.h中)会包含一个ERROR代码,用于标识错误。

进程管理的系统调用

  • fork
  • wait
  • exec
  • exit

I/O重定向

  • 标准输入:如果用一个新打开的文件来替换文件描述符0,那么输入将来自该文件而不是原始输入设备。
  • 标准输出:更改文件描述符1,指向打开的文件名,然后stdout的输出将会转到该文件而不是屏幕;同样也可以将stderr重定向到一个文件。

Linux系统中的管道编程

  • 管道是用于进程交换数据的单向进程件通信通道。管道有一个读取端和一个写入端。
  • 管道命令处理:在Unix/Linux中,命令行cmd1 | cmd2,sh将通过一个进程运行cmd1,并通过另一个进程运行cmd2,他们通过一个管道连接在一起,因此cmd1的输出变为cmd2的输入
  • 命令管道:命令管道又叫FIFO。在sh中,通过mknod命令创建一个命令管道:
    mknod mypipe p
    或在c语言中发出mknod()系统调用
    int r = mknod("mypipe",s_IFIFP,0);
    进程可像访问普通文件一样发个文命名管道。

苏格拉底挑战如下图:

 

标签:文件,调用,系统,笔记,学习,管道,进程,CPU
From: https://www.cnblogs.com/20191128hzy/p/17781320.html

相关文章

  • 2023-2024-1 20231309 《计算机基础与程序设计》第四周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第四周作业这个作业的目标作业正文2023-2024-120231309《计算机基础与程序设计》第四周学习总结教材学习内容总结本周主要学习了C语言......
  • jvm学习总结
    jvm学习总结1、程序计数器2、虚拟机栈2.1、定义控制栈的大小Xss256kb//命令行参数2.2、线程诊断top命令查看cpu运行情况psH-eopid,tid,%cpu|grep进程ID2.3、线程死锁voidfunction(){ while(true){ //方法一直循环不断地运行 }}3、本地方法栈Java中使用native修饰......
  • 2023-2024-1 20231319《计算机基础与程序设计》第四周学习总结
    2023-2024-120231319邓传山《计算机基础与程序设计》第3周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01这个作业的目标学习《计算机科学概论(第7版)》第4、5章......
  • 2023-2024-1 20231420 《计算机基础与程序设计》第四周学习总结
    2023-2024-120231420《计算机基础与程序设计》第四周学习总结作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业要求在哪里2023-2024-1计算机基础与程序设计第四周作业这个作业的目标1.学习《计算机科学概论》第4、5章并完成云班课测试......
  • 《信息安全系统设计与实现》第七周学习笔记
      第三章Unix/Linux进程管理多任务处理指的是同时进行几项独立活动的能力逻辑并行性称为“并发”进程进程是对映像的执行next是指向下一个PROC结构体的指针ksp保存的堆栈指针pid是一个进程的进程编号status是当前状态priority是进程调度优先级kstack是进程执行时......
  • 2023-2024-1 20231301 《计算机基础与程序设计》第四周学习总结
    2023-2024-120231301《计算机基础与程序设计》第四周学习总结作业信息作业链接作业课程<班级>(2023-2024-1-计算机基础与程序设计)作业要求<作业>(2023-2024-1计算机基础与程序设计第四周学习总结)作业目标<《计算机基础与程序设计》预习第四、五章>《计算机......
  • 学期2023-2024-1 20231409 《计算机基础与程序设计》第四周学习总结
    学期2023-2024-120231409《计算机基础与程序设计》第四周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第四周作业这个作业的目标自学教材:计算机科学概论第4章,第5章,C语言程......
  • 2023-2024-1 20231418《计算机基础与程序设计》第四周学习总结
                      2023-2024-120231418《计算机基础与程序设计》第四周学习总结这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里[2022-2023-1计算机基础与程序设计第四周作业]https://www.cnblogs.com/roce......
  • 第六周学习笔记20211303
    作业要求自学教材第3章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“请......
  • 2023-2024-1 20231421 《计算机基础与程序设计》第四周学习总结
    ------------恢复内容开始------------------------恢复内容开始------------作业信息作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK04作业目标:自学《计算机科学概论》第四章和第五章、《c语言程序设计》第三章作业正文:教材学习内容总结一、《计算机科学概......