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

学习笔记6

时间:2023-10-22 21:34:08浏览次数:23  
标签:操作系统 int 笔记 学习 进程 执行 PROC CPU

Unix/Linux进程管理

  1. 多任务处理
    一般来说,多任务处理指的是同时进行几项独立活动的能力。在计算机技术中,多任务处理指的是同时执行几个独立的任务。在单处理器(单CPU)系统中,一次只能执行一个任务。多任务处理是通过在不同任务之间多路复用CPU的执行时间来实现的,即将CPU执行操作从一个任务切换到另一个任务。不同任务之间的执行切换机制称为上下文切换,将一个任务的执行环境更改为另一个任务的执行环境。如果切换速度足够快,就会给人一种同时执行所有任务的错觉。这种逻辑并行性称为“并发”。在有多个 CPU或处理器内核的多处理器系统中,可在不同CPU上实时、并行执行多项任务。此外每个处理器也可以通过同时执行不同的任务来实现多任务处理。
  2. 进程的概念
    操作系统是一个多任务处理系统。任务也称为进程。
    进程的正式定义:进程是对映像的执行。
    操作系统内核将一系列执行视为使用系统资源的单一实体。系统资源包括内存空间、 I/O设备以及最重要的CPU时间。在操作系统内核中,每个进程用一个独特的数据结构表示,叫作进程控制块(PCB)或任务控制块(TCB)等。与包含某个人所有信息的个人记录一样,PROC结构体包含某个进程的所有信息。在实际操作系统中,PROC结构体可能包含许多字段,而且数量可能很庞大。首先,我们来定义一个非常简单的 PROC结构体来表示进程。
    typedef struct proc{
    struct proc *next;
    int *ksp;
    int pid;
    int ppid;
    int status;
    int priority;
    int kstack[1024];
    }PROC;
    在PROC结构体中,next是指旨向下一个PROC结构体的指针,用于在各种动态数据结构(如链表和队列)中维护PROC结构体。ksp字段是保存的堆栈指针。当某进程放弃使用 CPU时,它会将执行上下文保存在堆栈中,并将堆栈指针保存在PROC.ksp中,以便以后恢复。在PROC结构体的其他字段中 pid是标识一个进程的进程ID编号,ppid是父进程ID编号,status是进程的当前状态,p riority 是进程调度优先级,kstack是进程执行时的堆栈。操作系统内核通常会在其数据区中定定义有限数量的PROC结构体,表示为:
    PROC proc [NPROC]; NPROC a constant,e.g. 64

Unix/Linux中的进程

  1. 进程来源:当操作系统启动时,操作系统内核的启动代码会强行创建一个PID=0的初始进程,即通过分配PROC结构体(通常是pi roc[0]) 进行创建,初始化PROC内容,并让运行指向 proc[0]。然后,系统执行初始进程1 P0。大多数操作系统都以这种方式开始运行第一个进程。 PO继续初始化系统,包括系统硬件和内核数据结构。然后,它挂载一个根文件系统,使系统可以使用文件。在初始化系统之后后,PO复刻出一个子进程P1,并把进程切换为以用户模式运行 P1。
  2. 守护进程:当进程 P1开始运行时,它将其执行映像更改为INIT程序。因此,P1通常被称为INIT进程,因为它的执行映像是init程序。P1开始复刻出许多子进程。P1的大部分子进程都是用来提供系统服务的。它们在后台运行,不与任何用户交互。这样的进程称为守护进程。
  3. 登录进程:除了守护进程外,P1还复刻了许多LOGIN进程,每个终端上一个,用于用户登录。
  4. 进程的执行模式:
    内核模式,用户模式
    (1)中断:中断是外部设备发送给CPU的信号,请求CPU服务。当在Umode下执行时,CPU中断是启用的,因此它将响应任何中断。在中断发生时,CPU将进入Kmode来处理中断,这将导致进程进入Kmode。
    (2)陷阱:陷阱是错误条件,例如无效地址、非法指令、除以0等,这些错误条件被 CPU识别为异常,使得CPU进入Kmode来处理错误。在Unix/Linux中,内核陷阱处理程序将陷阱原因转换为信号编号,并将信号传递给进程。对于大多数信号,进程的默认操作是终止。
    (3)系统调用:系统调用(简称syscall)是一种允许Umode进程进入Kmode以执行内核函数的机制。当某进程执行完内核函数后,它将期望结果和一个返回值返回到Umode,该值通常为0(表示成功)或-1(表示错误)。如果发生错误,外部全局变量errmo(在ermo. h中)会包含一个ERROR代码,用于标识错误。用户可使用库函数

进程管理的系统调用

系统调用:fork(),wait(),exec(),exit()
每个都是发出实际系统调用的库函数:
int syscall(int a, int b, int c, int d)

  1. fork():创建子进程并返回子进程的pid,如果fork()失败则返回-1 。在fork()成功之后,父进程和子进程都执行它们自己的Umode映像,紧跟着fork()之后的映像是完全相同的。
  2. wait():使父进程等待子进程的终止,并获取子进程的退出状态。
    等待子进程终止:wait() 使父进程暂停执行,直到一个子进程终止。
    获取子进程的退出状态:通过 wait() 返回的状态值,可以获取子进程的退出状态。
    子进程回收:当子进程终止后,wait() 将回收子进程的资源,包括进程表项等。
    阻塞父进程:如果父进程调用 wait() 时没有终止的子进程,父进程将被阻塞,暂停执行,直到有子进程终止。
    非阻塞模式:可以使用 WNOHANG 标志来设置非阻塞模式,这样父进程在没有终止的子进程时不会被阻塞,而是立即返回。
    多子进程管理:wait() 可以处理多个子进程,但返回的子进程状态是不确定的。
    通过使用 wait(),父进程可以控制和监控子进程的执行,了解子进程的终止状态,并根据需要采取进一步的操作。
  3. exec():更改进程执行映像,进程可以使用exec()将其Umode映像更改为不同的可执行文件。
    int execve(const char *filenan me, char *const argv[ ], char *const envp[ ]);
    在execve()系统调用中,第一个参数文件名与当前工作目录(CWD)或绝对路径名有关。参数argv[]是一个以NULL结尾的字符串指针数组,每个指针指向一个命令行参数字符
    串。按照惯例,argv[0]是程序名,其他argv[]项是程序的命令行参数。
  4. exit():终止当前进程的运行的,它会通知操作系统该进程已经运行完毕并要求操作系统回收该进程消耗的资源。实现过程中,当一个进程调用exit()系统调用时,操作系统在内核态中立即完成一系列清理工作,包括释放该进程占用的内存、文件描述符、套接字等资源。然后将进程状态设置为停止运行并从调度器中移除掉该进程。同时,操作系统会向父进程发送一个信号,通知父进程该子进程已经终止。最后,操作系统将进程的退出状态传递给父进程,以便父进程可以获取该状态并作出相应的处理。

苏格拉底挑战

Linux/Unix进程管理知识点苏格拉底挑战


Linux/Unix进程管理的系统调用知识点苏格拉底挑战





标签:操作系统,int,笔记,学习,进程,执行,PROC,CPU
From: https://www.cnblogs.com/wzj1234/p/17781193.html

相关文章

  • 2023-2024-1 20231321 王曦轶《计算机基础与程序设计》第4周学习总结
    2023-2024-120231321《计算机基础与程序设计》第4周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第4周作业)这个作业的目标<计算机科学概论第4章,......
  • 2023-2024-1 20231310 《计算机基础与程序设计》第4周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第4周作业这个作业的目标计算机科学概论第4章,第5章,C语言程序设计第3章等作业正文https://www.cnblogs.com/wang-hoNbang/p/17781109.html......
  • 2023-2024-1 20231419 《计算机基础与程序设计》第四周学习总结
    2023-2024-120231419《计算机基础与程序设计》第四周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK04这个作业的目标预习《计算机科学概......
  • 2023-2024-1 20231325 《计算机基础与程序设计》第四周学习总结
    目录作业信息教材学习内容总结1.《计算机科学概论》第四章,第五章2.《c语言程序设计》第三章基于AI的学习学习心得学习进度条作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业的要求在哪里1.学习《计算机科学概论》第四章,第......
  • 学习笔记6
    目录学习笔记6知识点归纳第3章Unix/linux进程管理苏格拉底挑战问题与解决方案学习笔记6知识点归纳第3章Unix/linux进程管理多任务处理Unix/Linux操作系统支持多任务处理,即同时运行多个程序或任务。每个任务都是一个进程,独立运行,互不干扰。进程的概念:进程是操作系统中......
  • Python学习笔记(一)
    Python中一切皆对象,函数和类也是对象,属于Python的一等公民。对象可以赋值给一个变量对象可以添加到集合对象中对象可以作为参数传递给函数对象可以当做函数的返回值对象的三个特征:1、身份(id());2、类型;3、值type->int>1type>class->objobject是最顶层基类type也是一个......
  • 学习笔记6
    一、任务详情自学教材第3章,提交学习笔记(10分),评分标准如下知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》 第七周学习总结
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 20211314王艺达学习笔记6
    Unix/Linux进程管理进程是Unix操作系统抽象概念中最基本的一种。进程管理是所有操作系统的心脏所在。一、进程进程是处于执行期的程序。除了可执行程序代码,还包括打开的文件、挂起的信号、内核内部数据、一个或者多个执行线程等多种资源线程是在进程活动中的对象;内核调度的......
  • 2023-2024-1 20231405 《计算机基础与程序设计》第四周学习总结
    2023-2024-120231405《计算机基础与程序设计》第四周学习总结作业信息作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP作业要求在哪里https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/13009作业的目标自学《计算机科......