Linux进程模型
操作系统必备基础知识

操作系统必备基础知识今天给大家推荐两份大佬们总结的PDF,一份是计算机基础知识,一份是操作系统,反正帅地看完之后,和面试官聊天,都有点飘了,废话不多说,下面就让小编带你去看看哪些操作系统必备基础知识,希望能帮助到大家!操作系统基础知识操作系统是计算机体系中必不可少的核心系统软件,其他软件(如编辑程序、汇编程序、编译程序、数据库管理系统等系统软件,以及大量应用软件)是建立在操作系统的基础上,并在操作系统的统一管理和支持下运行。
操作系统是用户与计算机之间的桥梁,用户可以通过操作系统提供的功能访问计算机系统中的软硬件资源。
操作系统的作用是通过资源管理提高计算机系统的效率,改善人机界面,为用户提供有好的工作环境。
有效地组织和管理系统中的各种软硬件资源,合理的组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。
简单的说,操作系统就是运行在计算机硬件和软件(其他系统软件和应用软件)之间的一个系统软件,它的主要作用就是让计算机能够运行的很好的同时让你觉得也不错。
操作系统分为这么几种:批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统、嵌入式操作系统、微机操作系统(这个我们就比较常见了,比如Linux、Windows、Unix、手机上的基于Unix的安卓系统等等)。
操作系统的功能可分为5大部分:处理机(CPU)管理、文件管理、存储管理、设备管理和作业管理。
下面说说处理机管理中的一些基础知识。
三态模型五态模型在多道程序环境的系统中,存在多个可以一起进行(并发执行)的进程,因此必然会存在进程之间的通信问题。
进程间的通信主要有同步、互斥、调度、死锁、信号量机制等问题进程间的同步多个进程都是独立进行的,有的时候需要在某些地方协调一下,比如进程A在生产一个原件,进程B要加工这个原件,这时候就需要进程B等待进程A完成后才能开始进行,这就是进程之间的同步。
进程间的互斥这就是指两个进程都想用同一个资源,但是这个资源同时只能被一个进程使用。
电子科技大学 UNIX_Linux操作系统内核结构6章

一个进程的上下文包括五个方面: ①、被进程正文所定义的进程状态 ②、进程所使用的全局变量和数据结构的值 ③、机器寄存器的值 ④、进程表项proc结构和user结构中的值 ⑤、用户堆栈和核心堆栈中的值
“执行一个进程”——指系统在该进程的上下文中执行, 也就是进程的上下文确定和限制了进程的运行环境和空间。
可以随进程状态的变化而在内外存之间交换的进程控制信 息中的其余部分。
为了方便进程映像在内外之间交换,UNIX系统中把进程非 常驻内存部分作为一个整体,占用连续的存贮区,其顺序是: 首先是user结构(进程扩充控制块)和核心栈,然后是数据段 和用户栈。
16
进程user结构和核心栈合并构成进程的“本进程数据区— —ppda区(per process data area)。
15
在进程映像占用的内存被分配给其他进程之前,不但该进 程的程序和数据需要调出内存,该进程的控制信息也被调出内 存。但为了该进程能够再次被调入内存,内存中需要保留一部 分必要的信息,这就把进程控制信息也分成了常驻内存和非常 驻内存两部分: 常驻内存控制信息块
是系统需要经常查询以及恢复整个进程映象时所不可缺少 的信息。 非常驻内存控制信息块
7
3、进程的解释
在UNIX系统中进程的概念包含什么意义?
在较高级的方面 进程是一个重要的组织概念。可以把计算机系统看作是若
干进程组合的活动。进程是系统中活动的实体,它可以生成和 消灭,申请和释放资源,可以相互合作和竞争,而真正活动的 部件如处理机和外部设备则是看不见的。
在较低级方面 进程是不活动的实体,而处理机则是活动的,处理机的任
核心从一个进程转到另一个进程执行时,叫做“上下文切
换”,也就是系统从一个进程上下文确定的环境换到另一个进
linux操作系统的体系结构

linux操作系统的体系结构Linux操作系统的体系结构Linux是一个开源的操作系统内核,它是一个多任务、多用户的操作系统。
它支持大量的硬件平台,可以运行在个人计算机、服务器、移动设备和嵌入式系统中。
Linux操作系统的核心设计是基于UNIX操作系统的设计理念,具有稳定、安全和高性能的特点。
本文将详细介绍Linux操作系统的体系结构。
一、内核空间和用户空间Linux操作系统采用了一种分层的体系结构,将操作系统分为内核空间和用户空间两部分。
内核空间是操作系统内核运行的区域,包括内核代码、驱动程序和中断处理程序等。
用户空间是用户程序运行的区域,包括应用程序、库文件和用户数据等。
内核空间和用户空间通过操作系统提供的系统调用接口进行通信。
用户程序通过系统调用接口请求操作系统提供的服务,如文件操作、进程管理和网络通信等。
操作系统在内核空间中响应这些请求,并将结果返回给用户程序。
二、进程管理Linux操作系统是一个多任务操作系统,能够同时运行多个进程。
进程是程序在操作系统中的实体,它包括代码、数据和运行环境等。
Linux操作系统通过进程管理功能对进程进行管理和调度。
进程管理功能包括创建进程、销毁进程、挂起进程、恢复进程和进程切换等。
Linux操作系统通过调度算法决定哪个进程优先执行,以实现操作系统的高效利用和公平分享。
三、内存管理Linux操作系统通过内存管理功能对内存进行管理和分配。
内存是计算机中重要的资源,操作系统需要有效地管理和分配内存。
Linux操作系统使用虚拟内存管理技术,将物理内存虚拟化为逻辑地址空间。
这样,每个进程都有自己独立的逻辑地址空间,不会相互干扰。
操作系统通过内存管理功能实现虚拟地址到物理地址的转换,并对内存进行分页、分段和交换等操作,以实现内存的高效利用和管理。
四、文件系统Linux操作系统通过文件系统管理文件和目录。
文件系统是一种组织和存储文件的方式,可以将文件组织成层次结构,方便用户访问和管理。
linux体系结构

linux体系结构linux体系结构从⼤⾯上来说,linux体系结构分为:⽤户空间:C库、⽤户应⽤程序内核空间:系统调⽤接⼝、内核、硬件平台依赖代码具体来讲,linux可划分为5个部分:linux内核、GNU⼯具链、桌⾯环境、应⽤软件linux内核系统调⽤接⼝(SCI层):给应⽤⽤户提供⼀套标准的系统调⽤函数,上层⽤户可以通过这⼀套标准接⼝来访问底层内存管理:进程管理:⽂件管理:设备驱动管理:内存管理1.作⽤:管理物理内存、创建和管理虚拟内存为了使有限的物理内存满⾜应⽤程序对内存的需求,linux采⽤“虚拟内存”的内存管理⽅式实现,实现原理:交换空间:内核在硬盘上化⼀段存储空间来实现虚拟内存,这段存储空间称为“交换空间”页⾯:内存存储单元被分割成很多块,称为“页⾯”页⾯内存表:内核会维护⼀张表,来指明哪些页⾯位于物理内存,那么页⾯位于交换空间换出:物理内存---->交换空间换⼊:交换空间---->物理内存⼯作过程:1、内核将程序运⾏⽤到的页⾯就放到内存⾥,暂时不⽤就放到交换空间中(换出)。
2、当⽤到交换空间的页⾯时,就把它们调到内存中(换⼊),然后把物理内存其他⽤不到的页⾯换出到交换空间。
查看内存#cat /proc/meminfoMemTotal: 1035244 kB #物理内存1GMemFree: 786616 kB #空闲内存700M左右...SwapTotal: 2096472 kB #有2G的交换空间....查看内存使⽤情况#freetotal used free shared buffers cachedMem: 502360 489964 12396 0 53852 283372-/+ buffers/cache: 152740 349620Swap: 1015800 0 1015800共享内存页⾯:创建⼀写共享内存页⾯,⽤于多个进程共享使⽤。
#ipcs -m #查看共享内存页⾯key shmid owner perms bytes nattch status0x00000000 0 rich 600 52228 6 dest#owner:共享内存段的所有者#perms:权限进程管理参见⽂件管理linux内核⽂件管理采⽤虚拟⽂件系统(VFS),隐藏各种⽂件系统的具体细节,为⽂件操作提供统⼀的接⼝。
Linux系统编程之进程控制(进程创建、终止、等待及替换)

Linux系统编程之进程控制(进程创建、终⽌、等待及替换)进程创建在上⼀节讲解进程概念时,我们提到fork函数是从已经存在的进程中创建⼀个新进程。
那么,系统是如何创建⼀个新进程的呢?这就需要我们更深⼊的剖析fork 函数。
1.1 fork函数的返回值调⽤fork创建进程时,原进程为⽗进程,新进程为⼦进程。
运⾏man fork后,我们可以看到如下信息:#include <unistd.h>pid_t fork(void);fork函数有两个返回值,⼦进程中返回0,⽗进程返回⼦进程pid,如果创建失败则返回-1。
实际上,当我们调⽤fork后,系统内核将会做:分配新的内存块和内核数据结构(如task_struct)给⼦进程将⽗进程的部分数据结构内容拷贝⾄⼦进程添加⼦进程到系统进程列表中fork返回,开始调度1.2 写时拷贝在创建进程的过程中,默认情况下,⽗⼦进程共享代码,但是数据是各⾃私有⼀份的。
如果⽗⼦只需要对数据进⾏读取,那么⼤多数的数据是不需要私有的。
这⾥有三点需要注意:第⼀,为什么⼦进程也会从fork之后开始执⾏?因为⽗⼦进程是共享代码的,在给⼦进程创建PCB时,⼦进程PCB中的⼤多数数据是⽗进程的拷贝,这⾥⾯就包括了程序计数器(PC)。
由于PC中的数据是即将执⾏的下⼀条指令的地址,所以当fork返回之后,⼦进程会和⽗进程⼀样,都执⾏fork之后的代码。
第⼆,创建进程时,⼦进程需要拷贝⽗进程所有的数据吗?⽗进程的数据有很多,但并不是所有的数据都要⽴马使⽤,因此并不是所有的数据都进⾏拷贝。
⼀般情况下,只有当⽗进程或者⼦进程对某些数据进⾏写操作时,操作系统才会从内存中申请内存块,将新的数据拷写⼊申请的内存块中,并且更改页表对应的页表项,这就是写时拷贝。
原理如下图所⽰:第三,为什么数据要各⾃私有?这是因为进程具有独⽴性,每个进程的运⾏不能⼲扰彼此。
1.3 fork函数的⽤法及其调⽤失败的原因fork函数的⽤法:⼀个⽗进程希望复制⾃⼰,通过条件判断,使⽗⼦进程分流同时执⾏不同的代码段。
linux分层设计体系结构

linux分层设计体系结构Linux是一种开源的操作系统,其设计采用了分层的体系结构。
这种设计使得Linux具有高度的灵活性和可扩展性,同时也方便了系统的维护和管理。
本文将详细介绍Linux的分层设计体系结构。
在Linux的分层设计中,最底层是硬件层。
硬件层包括计算机的各种硬件设备,如处理器、内存、硬盘、网络接口等。
Linux通过设备驱动程序来管理和控制这些硬件设备,使其能够与操作系统进行交互。
在硬件层之上是内核层。
内核是操作系统的核心,负责管理系统的资源和提供各种系统服务。
Linux的内核是一个单独的模块,可以独立于其他软件进行开发和维护。
内核提供了各种系统调用接口,以及对进程、文件系统、网络和设备的管理和控制功能。
在内核层之上是库层。
库是一组共享的代码和函数,可以为应用程序提供常用的功能和服务。
Linux提供了许多不同的库,如C库、数学库、网络库等。
这些库可以被开发人员用来开发应用程序,提高开发效率和代码复用性。
在库层之上是应用层。
应用层包括各种应用程序和工具,如文本编辑器、图形界面、网络浏览器等。
这些应用程序可以通过系统调用接口与内核进行交互,并利用库提供的功能来实现各种任务和操作。
除了以上四个层次外,Linux还有其他一些重要的组件和模块。
例如,系统初始化和启动过程中,会加载引导程序和初始化程序;文件系统是用来组织和管理文件和目录的;网络协议栈是用来实现网络通信的;系统服务是用来提供各种系统功能和服务的。
这些组件和模块与其他层次之间相互关联,共同构成了Linux的完整体系结构。
Linux的分层设计体系结构具有许多优点。
首先,分层设计使得系统的各个组件和模块之间相互独立,可以分别进行开发、测试和维护,提高了开发和维护效率。
其次,分层设计使得系统的各个层次之间的接口清晰明确,方便了系统的扩展和升级。
此外,分层设计还提高了系统的稳定性和可靠性,一旦某个层次出现问题,不会对其他层次造成影响。
Linux的分层设计体系结构是一种高效、灵活和可扩展的设计方式。
linux下常见的调度策略及调度原理

linux下常见的调度策略及调度原理Linux是一种开源的操作系统,广泛应用于服务器和嵌入式设备中。
在Linux系统中,进程调度策略是操作系统的核心组成部分之一,它决定了进程的执行顺序和时间分配。
本文将介绍Linux下常见的调度策略及其调度原理。
在Linux系统中,常见的进程调度策略包括先来先服务(FCFS)、最短作业优先(SJF)、时间片轮转(RR)和优先级调度(Priority Scheduling)等。
先来先服务(FCFS)是一种简单而直观的调度策略,它按照进程到达的先后顺序进行调度。
即当一个进程到达系统时,它将被放入就绪队列的末尾,并等待CPU的分配。
当CPU空闲时,系统将选择就绪队列中的第一个进程分配给CPU执行。
这种调度策略的优点是公平性强,但缺点是无法处理长作业和短作业的差异,容易产生"饥饿"现象。
最短作业优先(SJF)调度策略是根据进程的执行时间来决定优先级的调度策略。
即系统会选择执行时间最短的进程先执行,以减少平均等待时间。
这种调度策略的优点是能够最大程度地减少平均等待时间,但缺点是可能会出现长作业等待时间过长的问题。
时间片轮转(RR)是一种基于时间片的调度策略,每个进程被分配一个固定长度的时间片。
当一个进程的时间片用完时,系统将把CPU分配给下一个进程。
这种调度策略的优点是能够有效地平衡进程之间的响应时间,但缺点是可能会导致频繁的上下文切换。
优先级调度(Priority Scheduling)是一种根据进程优先级来决定调度顺序的策略。
每个进程被分配一个优先级,优先级越高的进程越容易被调度执行。
这种调度策略的优点是能够根据不同进程的需求进行灵活调度,但缺点是可能会导致低优先级进程的"饥饿"问题。
在Linux系统中,调度算法的实现是通过内核的进程调度器来完成的。
内核中的调度器会根据不同的调度策略来选择下一个要执行的进程,并将其上下文切换到CPU中执行。
linux的进程管理实验总结

linux的进程管理实验总结Linux的进程管理实验总结1. 引言Linux中的进程管理是操作系统的核心功能之一,在实际的系统运行中起着重要的作用。
进程管理能够有效地分配系统资源、管理进程的运行状态和优先级,以及监控进程的行为。
本文将以Linux的进程管理实验为主题,分步骤介绍实验过程及总结。
2. 实验目的本次实验的目的是理解Linux中进程的概念,掌握进程的创建、运行和终止的基本操作,以及进程的状态转换过程。
3. 实验环境本次实验使用的是Linux操作系统,可以选择使用虚拟机安装Linux或者使用Linux主机进行实验。
4. 实验步骤4.1 进程的创建在Linux中,可以使用系统调用fork()来创建一个新的子进程。
在实验中,可以编写一个简单的C程序来调用fork()系统调用,实现进程的创建。
具体步骤如下:(1)创建一个新的C程序文件,例如"process_create.c"。
(2)在C程序文件中,包含必要的头文件,如<stdio.h>和<unistd.h>。
(3)在C程序文件中,编写main()函数,调用fork()函数进行进程的创建。
(4)编译并运行该C程序文件,观察控制台输出结果。
实验中,可以通过观察控制台输出结果,判断新的子进程是否被成功创建。
4.2 进程的运行在Linux中,通过调用系统调用exec()可以用一个新的程序替换当前进程的执行。
可以使用exec()函数来实现进程的运行。
具体步骤如下:(1)创建一个新的C程序文件,例如"process_run.c"。
(2)在C程序文件中,包含必要的头文件和函数声明,如<stdio.h>和<unistd.h>。
(3)在C程序文件中,编写main()函数,调用execl()函数来执行一个可执行程序。
(4)编译并运行该C程序文件,观察控制台输出结果。
实验中,可以通过观察控制台输出结果,判断新的程序是否被成功执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
谢谢观赏
• 1. 对于FIFO的进程,意味着只有当前进程执行完毕才会轮到其他进 程执行。由此可见相当霸道。 • 2. 对于RR的进程。一旦时间片消耗完毕,则会将该进程置于队列的 末尾,然后运行其他相同优先级的进程,如果没有其他相同优先级的 进程,则该进程会继续执行。
•
总而言之,对于实时进程,高优先级的进程就是大爷。它执行到 没法执行了,才轮到低优先级的进程执行。等级制度相当森严。
Linux进程模型
第 2组 寇兆美 马文帅 杨林
1.Linux进程模型概述
1.1 Linux下的进程结构 Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干 扰等特点。 Linux中的进程中包含3个段,分别为“数据段”、“代码段”和“ 堆栈段”。 “数据段”存放的是全局变量、常数以及动态数据分配的数据空间 ,根据存放的数据,数据段又可以分成普通数据段(包括可读可写/ 只读数据段,存放静态初始化的全局变量或常量)、BSS数据段(存 放未初始化的全局变量)以及堆(存放动态分配的数据)。 “代码段”存放的是程序代码的数据。
中断嵌套深度减1 恢复所保存的寄存器值,执行iret指令,回到被中断的进程继续执行
快中断处理过程
慢中断处理过程
保存所有寄存器的值
上向中断控制器确认(ASK)中断接收(同时屏蔽同类中断的接收)
中断嵌套深度增1 开放进一步的中断 调用相应中断处理例程(调用时讲被中断进程的诸寄存器值传给该例程,供其确定被 中断的是用户进程还是核心,但并不是所有中断处理例程都需要做这种判断)
• 7.Linux进程调度算法
Linux中的进程如果从调度策略划分,可以分为两类,普通进程 和实时进程。实时进程又可分为两类,FIFO,RR。实时进程的优先级 远远大于普通进程。
7.1普通进程调度策略
每一个普通进程都有一个静态优先级。这个值会被调度器用来与 作为参考来调度进程。在内核中调度的优先级的区间为[100,139], 数字越低,优先级越高。一个新的进程总是从它的父进程继承此值。 从进程管理篇(一)中了解到每个进程都有分配时间片。那么时间片 是如何分配的呢?时间片的计算公式如下(摘自《Understanding The Linux Kernel Version3》):
• • • • • • • • • • • • •
Mars-nwe:Netware文件和打印服务器。 Mcserv:Midnight命令文件服务器。 named:DNS服务器。 netfs:安装NFS、Samba和NetWare网络文件系统。 network:激活已配置网络接口的脚本程序。 nfs:打开NFS服务。 nscd:nscd(Name Switch Cache daemon)服务器,用于NIS的一个支持服务, 它高速缓存用户口令和组成成员关系。 portmap:RPC portmap管理器,与inetd类似,它管理基于RPC服务的连接。 postgresql:一种SQL数据库服务器。 routed:路由守候进程,使用动态RIP路由选择协议。 rstatd:一个为LAN上的其它机器收集和提供系统信息的守候程序。 ruserd:远程用户定位服务,这是一个基于RPC的服务,它提供关于当前记录 到LAN上一个机器日志中的用户信息。 rwalld:激活rpc.rwall服务进程,这是一项基于RPC的服务,允许用户给每 个注册到LAN机器上的其他终端写消息。
中断处理状态:当硬件发出一个中断处理信号时(可能是用户键入一 个字符,或时钟每隔10ms发出一次中断等),中断处理例程被激活
系统调用期间:系统调用通过软件中断启动。一个系统调用可能将相 应程序进程挂起等待一个事件。 等待态:进程正等待一个外部事件。只有在这个事件发生后,进程才 能继续工作。
7.2 实时进程调度
每一个实时进程都会与一个实时优先级相关联。实时优先级在1到 99之间。不同与普通进程,系统调度时,实时优先级高的进程总是先 于优先级低的进程执行。知道实时优先级高的实时进程无法执行。实 时进程总是被认为处于活动状态。
•
如果有数个 优先级相同的实时进程,那么系统就会按照进程出现 在队列上的顺序选择进程。假设当前CPU运行的实时进程A的优先级为 a,而此时有个优先级为b的实时进程B进入可运行状态,那么只要b<a ,系统将中断A的执行,而优先执行B,直到B无法执行(无论A,B为 何种实时进程)。不同调度策略的实时进程只有在相同优先级时才有 可比性:
从系统调用返回:每个系统调用后自动进入该状态,每个慢中断处理 完毕后也自动进入该状态。在该状态下,要查看是否需要调用程序是 否有信号要处理。调用程序可能将该进程切换为就绪态,同时激活另 一进程。 就绪态:处于此状态的进程正在竞争处理机,但处理机正在被另一个 进程占用。
5.LINUX常见系统进程
• 3.慢中断处理完毕后,通常不立即返回被中断的进程,而是调用程序 ,调用程序的调度结果不一定是被中断的进程,因此这种情况称为抢 先式调度或抢先式中断。而快中断处理完毕后,通常恢复现场返回被 中断的进程继续执行,称为非抢占式调度或非抢占式中断。慢中断是 最常见的中断。而快中断则通常用于短时间的、不太复杂的中断处理 任务。
• amd:自动安装NFS(网络文件系统)守侯进程。 • apmd:高级电源管理。 • Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和IP 地址对数 据库。 Autofs:自动安装管理进程automount,与NFS相关 ,依赖于NIS。 • Bootparamd:引导参数服务器,为LAN上的无盘工作站提供引导所需 的相关信 息,用于无盘客户端,通常都不需要。 • crond:Linux下的计划任务。 • Dhcpd:启动一个DHCP(动态IP地址分配)服务器。 • Gated:网关路由守候进程,使用动态的OSPF路由选择协议。 • Httpd:WEB服务器。 • Inetd:支持多种网络服务的核心守候程序。 • Innd:Usenet新闻服务器。 • Linuxconf:允许使用本地WEB服务器作为用户接口来配置机器。 • Lpd:打印服务器。
“堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局 部变量。 如下图所示。
1.2 Linux下进程的模式和类型
在Linux系统中,进程的执行模式分为用户模式和内核模式。如果当 前运行的是用户程序、应用程序或内核程序之外的系统程序,那么对 应程序就在用户模式下进行;如果在用户程序的执行过程中出现系统 调用或者发生中断事件,那么就要运行操作系统(内核)程序,进程 模式就变成内核模式。在内核模式下运行的程序可以执行机器的特权 指令,而且此时运行的程序不受用户的干扰,即使是root用户也不能 干扰内核模式下进程的运行。 用户进程可以在用户模式下运行,也可以在内核模式下运行,如 下图所示。
• rwhod:激活rwhod服务进程,它支持LAN的rwho和ruptime服务。 • sendmail:邮件服务器sendmail,如果不需要接收或转发电子邮件应 关闭,此时仍可发送电子邮件。
• • • • • • • • • • • •
sound:保存声卡设置。 smb:Samba文件共享/打印服务。 snmpd:本地简单网络管理候进程。 squid:激活代理服务器squid。 syslog:一个让系统引导时起动syslog和klogd系统日志守候进程的 脚本。 xfs:X Window字型服务器,为本地和远程X服务器提供字型集。 xntpd:网络时间服务器。 ypbind:为NIS(网络信息系统)客户机激活ypbind服务进程,如果 系统运行NIS服务器,则必需此服务。 yppasswdd:NIS口令服务器,如果系统运行NIS服务器,则必需此服 务。 ypserv:NIS主服务器。 gpm:鼠标的管理。 identd:AUTH服务,在提供用户信息方面与finger类似。
• •
Linux启动过程
3.Linux进程表和任务结构
• •
•
在Linux中进程又称为任务。进程表是由NR_TASKS个task结构组成 的静态数组:
struct task_struct *task[NR_TASKS];
每个进程在进程表中占有一项(一个task_struct结构)。在该 表中,所有进程通过一个双向环形链相连,链头由外部变量 init_task指定:
2.Linux初始化过程和进程层次
•
进程表中的task(0)和task(1)在Linux中是特别的进程。 task(0)即init_task,是系统启动时第一个产生的进程,扮演 一个特殊的角色。task(1)即PID为1的进程,是Linux系统中 第一个“真正的”进程。因为它通常执行init程序,所以也 成为init进程。这两个进程在核心中需要一直存在,因此 它们的进程号(0和1)只负责“无主的”系统时间的使用, 即空转进程。因此在调度等过程中需扫描进程表链,它通 常被跳过。 Linux初始化过程图:
struct task_struct init_task;
• • •
init_task对应于系统的第一个任务INIT_TASK,它在进程表链被 扫描时通常被跳过。当前进程由变量current指定:
struct task_struct current;
4.Linux进程状态
运行态:该任务是“活的”,而且正在非特权的用户方式下运行。
上述例程成功后,通知中断控制器又可以接收本类中断
中断嵌套ห้องสมุดไป่ตู้度减1
跳转到汇编子程序ret_rom_ys_all()执行该程序从不返回
慢中断与快中断的区别:
• 1.慢中断处理最初保存现场时,需要保存所有寄存器的值。而快中断 处理最初保存现场时,只需要保存那些被常规C函数修改的寄存器的 值(但如果在中断处理过程用到汇编代码,则其余寄存器也必须保存 和恢复)。 • 2.在慢中断处理时,通常不屏蔽其他中断。而快中断处理时,通常要 屏蔽其他所有中断(除特别说明)。