首页 > 其他分享 >学习笔记6 第三章的自学归纳

学习笔记6 第三章的自学归纳

时间:2023-10-22 12:33:20浏览次数:48  
标签:文件 第三章 int 笔记 内核 进程 自学 执行 PROC

学习笔记6 第三章的自学归纳

多任务处理

  • 一般来说,多任务处理指的是同时进行几项独立活动的能力。在计算机技术中,指的是同时执行几个独立的任务。多任务处理是所有操作系统的基础,总的来说,它也是并行编程的基础。

进程的概念

  • 进程是对映像的执行,操作系统内核将一系列执行视为使用系统资源的单一实体。系统资源包括内存空间、I/O设备以及最重要的CPU时间。在操作系统内核中,每个进程用一个独特的数据结构表示,即PROC结构体,它包含了某个进程的所有信息。
  • 如下是一个PROC结构体

1.next是指向下一个PROC结构体的指针

2.ksp保存的堆栈指针

3.pid是一个进程的进程编号

4.status是当前状态

5.priority是进程调度优先级

6.kstack是进程执行时的堆栈

多任务处理系统

type.h文件

#define FREE 0
#define READY 1
#define SLEEP 2
#define ZOMBIE 3
typedef struct proc
{ 
   struct proc *next;
   int *ksp;
   int pid;
   int ppid;
   int status;
   int priority;
   int kstack[SSIZE];
}
  • type.h文件定义了系统常熟和表示进程的简单PROC结构体。

ts.s文件

  • ts.s文件在32位GCC汇编代码中可实现进程上下文切换

queue.c文件

  • 可实现队列和链表操作

进程同步

  • 是指控制和协调进程交互以确保其正确执行所需的各项规则和机制

  • 睡眠模式/等待:ksleep(int event)

  • 唤醒操作:kwakeup(event)

进程终止

  • 分为正常终止和异常终止

  • 进程家族树:PROC child,sibling,*parent;

  • 子进程,兄弟进程,父进程

  • 等待子进程终止

  • 无论何时,进程都能调用内核函数kwait等待僵尸子进程:pid = kwait(int *status)

Unix/Linux中的进程

1.进程来源

  • 当操作系统启动时,操作系统内核的启动代码会强行创建一个PID=0初始进程执行初始进程P0

2.INIT和守护进程

  • 当进程P1开始运行时,它将其执行映像更改为INIT程序。P1 开始复刻出许多子进程,P1的大部分子进程都是用来提供系统服务的。它们在后台运行,不与任何用户交互。

3.登录进程

  • P1复刻了许多LOGIN进程,每个终端上一个,用于用户登录。

4.sh进程

  • 当用户成功登录时,LOGIN进程会获取用户的gid和uid,从而称为用户的进程。他将目录更改为用户的主目录并执行列出的程序,通常是命令解释程序sh。

5.进程的执行模式

  • 在Unix/Linux中进程以两种不同的模式执行,即内核模式和用户模式,简称Kmode和Umode。在每种执行模式下,一个进程有一个执行映像。

  • Umode只能通过中断,陷阱,系统调用三种方式进入Kmode

进程管理中的系统调用

  • fork()、wait()、exec()、exit()

I/O重定向

  • 文件流和文件描述符

  • 文件流I/O和系统调用

  • 重定向标准输入

  • 如果用一个新打开的文件来替换文件描述符0,那么输入将来自该文件而不是原始输入设备。

  • 重定向标准输出

  • 更改文件描述符1,指向打开的文件名,然后stdout的输出将会转到该文件而不是屏幕;同样也可以将stderr重定向到一个文件。

管道

  • 管道是用于进程交换数据的单向进程间通信通道。管道有一个读取端和一个写入端
  • 管道命令处理

cmd1 | cmd2

sh将通过一个进程运行cmd1,并通过另一个进程运行cmd2,他们通过一个管道连接在一起,因此cmd1的输出变为cmd2的输入。

遇到的问题

苏格拉底提问


标签:文件,第三章,int,笔记,内核,进程,自学,执行,PROC
From: https://www.cnblogs.com/889w/p/17780176.html

相关文章

  • Go笔记(2)-5种运算符总结
    运算符(1)算术运算符(2)关系运算符(3)逻辑运算符(4)位运算符(5)赋值运算符......
  • c语言初学笔记3
    这几天整理的比较慢,因为有一些是之前的东西在这里做再次批注和解释,更加详细一点intMax(intx,inty){ if(x>y) returnx; else returny;}intmain(){ intnum1=10; intnum2=20; intmax=0; max=Max(num1,num2); printf("max=%d\n",max); return0;}上来就是......
  • 第三章:多个坐标空间
    第三章:多个坐标空间本章提供一些用于图形和游戏的常用坐标空间示例,然后我们将讨论坐标空间如何嵌套在其他坐标空间中。1.为什么需要多个坐标空间从理论上讲,所有点都可以使用单个“世界”坐标系来表达。但有些信息是有意义的或仅在特定上下文环境中可用(表述有点怪,但能理解意思......
  • ABBAC900F学习笔记326:freelance2019SP1作为OPC DA SERVER,WINCC7.5SP2作为OPC DA CLIEN
    昨天练习了ABB的OPCDA通过寻,在同一台计算机上实验的。今天测试局域网上freelance2019SP1作为OPCDASERVER,WINCC7.5SP2作为OPCDACLIENT通讯。测试在昨天的ABB练习程序基础上进行。1.freelance2019SP1作为OPCDASERVER,配置DCOM,参考前面WINCC作为DASERVER的配置方法WINDO......
  • 防火墙命令学习笔记
    标准IP访问表和扩展IP访问表,区别主要是访问控制的条件不一样。标准IP访问表只是根据IP包的源地址进行标准IP防火墙标准访问控制规则格式:access-listlist-number{denylpermit}source[source-wildcard][log]而扩展IP访问控制规则的格式是:access-lis1ist-number{denylper......
  • sql自学网入门视频
    col:列,每一个列都有一个列名、在写查询的时候,selectcol,colfromtablewhere条件在进行运算的时候是1.先from子句(找到数据源)2.where子句(计算数据的范围)3.select子句(列出查询出来表的列)。我们写sql的时候需要遵守这三步,有助于我们逻辑清晰复杂查询的步骤复杂查询的难......
  • 20211105李宜时《信息安全系统设计与实现》第六周学习笔记
    Ubuntu学习笔记:Unix/Linux进程管理相关基础知识在Ubuntu学习Unix/Linux进程管理之前,需要了解以下基础知识:进程:进程是正在运行的程序的一个实例。每个进程都有一个唯一的进程标识符(PID)。进程状态:进程可以处于运行、睡眠、停止、僵尸等不同状态。进程调度:操作系统负责安......
  • ABBAC900F学习笔记324:WEB页面访问WINCCweb服务器
    这一篇学习笔记我在新浪博客记录过,地址是ABBAC900F学习笔记324:WEB页面访问WINCCweb服务器_来自金沙江的小鱼_新浪博客(sina.com.cn)我在这里也记录一遍。前段时间测试了一下WINCC7.5SP2web发布功能,并且在本机和远程计算机上IE浏览器访问成功。今天结合一下以前的练习,做ABBFRE......
  • ABBAC900F学习笔记325:FREELANCE2019SP1的OPC练习1
    这一篇博客我爱新浪博客发表过,地址是ABBAC900F学习笔记325:FREELANCE2019SP1的OPC练习1_来自金沙江的小鱼_新浪博客(sina.com.cn)我在这里也记录一遍今天在家做一下freelance2019SP1的OPC通讯练习。新建一个freelance项目,插入硬件和软件、OPC网关、OS等,按照以前的练习配置资源......
  • 信息安全系统设计与实现 学习笔记6
    Unix/Linux进程管理多任务处理同时执行几个独立的任务进程在操作系统中,任务也称为进程。进程是对映像的执行。PROC结构体多任务处理动态进程创建进程终止休眠和唤醒实现进程同步、进程关系二叉树的形式实现家族树、父进程等待子进程上下文切换进程处理UNIX/LINUX......