今天同学去面Nortel,被问及一个问题,也是一个流传的老问题:如果让你来设计操作系统,你会怎么设计进程的数据结构?
借鉴一下linux的设计思想吧:
在linux的内核的实现中,有一些数据结构使用频度较高,他们是:
task_struct.
进程调度是Linux操作系统的核心,它对整个操作系统的执行效率至关重要.进程调度控制着进程对CPU的访问,Linux 内核利用一个数据结构(task_struct)代表一个进程,task_struct容纳了一个进程的所有信息,是系统对进程进行控制的唯一手段;
代表进程的数据结构指针形成了一个task数组(Linux中,任务和进程是相同的术语),这种指针数组有时也称为指针向量。这个数组的大小由NR_TASKS(默认为512),表明Linux系统中最多能同时运行的进程数目。当建立新进程的时候,Linux为新进程分配一个task_struct结构,然后将指针保存在task数组中。调度程序一直维护着一个current指针,他指向当前正在运行的进程。
Mm_struct
每个进程的虚拟内存由一个mm_struct结构来代表,该结构实际上包含了当前执行映像的有关信息,并且包含了一组指向vm_area_struct结构的指针,vm_area_struct结构描述了虚拟内存的一个区域。
Inode
虚拟文件系统(VFS)中的文件、目录等均由对应的索引节点(inode)代表。每个VFS索引节点中的内容由文件系统专属的例程提供。VFS索引节点只存在于内核内存中,实际保存于VFS的索引节点高速缓存中。如果两个进程用相同的进程打开,则可以共享inade的数据结构,这种共享是通过两个进程中数据块指向相同的inode完成。
分享到:
相关推荐
进程控制块(Process Control Block,PCB)是操作系统中用来管理进程的数据结构。其主要包括以下几个部分: 1. 进程名称(Name):用于标识进程的唯一名称。 2. 进程优先级(Priority):表示进程的执行优先级。 3....
### 程序设计与数据结构 #### C程序设计与数据结构概览 本书由周立功编写,作为一本深入浅出介绍C程序设计及数据结构的书籍,它旨在为初学者提供一个全面且易于理解的学习平台。书中不仅涵盖了基础理论知识,还...
### 程序设计与数据结构 #### 一、C语言程序与数据结构基础 在本章节中,作者周立功主要介绍了C语言的基础知识以及数据结构的概念。 - **C语言**:一种广泛使用的通用编程语言,它具有简洁、高效的特点,适用于...
进程控制块(PCB)是操作系统中用于管理进程的数据结构。它记录了进程的状态、优先级、寄存器信息等信息。PCB是进程调度算法的基础,操作系统可以根据PCB中的信息来确定进程的执行顺序。 在本文的示例代码中,我们...
- 数据结构:`PCB`结构体作为进程的基本单元,用于存储和管理进程的状态和属性。 - 算法流程图:提供了动态优先权和轮转法调度算法的详细流程图,便于理解和实现。 课程设计通过编程实现这些流程,模拟实际操作...
【标题】南航数据结构课程设计大二.zip的解析与详解 在计算机科学领域,数据结构是编程的基础,它涉及到如何高效地存储和组织数据,以便进行有效的计算和操作。本课程设计集涵盖了一系列的数据结构应用实例,旨在...
5. **数据结构设计**:在实现调度算法时,可能需要使用到特定的数据结构,如队列(用于表示等待执行的进程)和栈(用于保存被中断进程的状态)。 6. **流程控制**:设计程序的流程图,明确每个模块的功能和相互关系...
根据数据结构,用 C 语言设计实现了相应函数,如创建进程、删除进程、 挂起进程、唤醒进程等功能。设计函数实现了调度程序,在每个进程操作执 行完毕后,自动调用执行。所展示的程序运行结果图,为模拟单核单 CPU 中...
- **进程控制块**是操作系统用于存储进程状态数据的数据结构。在本次设计中,进程控制块包含以下几个关键字段: - **进程标识符ID**:用于唯一标识进程。 - **进程优先级Priority**:表示进程的优先级别。数值越...
在数据结构方面,设计了一个名为`process`的结构体,包含了进程的基本信息,如进程名、进程序号、到达时间、运行时间、状态和优先级。此外,还定义了进程链表来存储和排序进程,根据进程的到达时间进行排列。插入新...
1. 建立作业的数据结构描述 2. 使用两种方式产生作业/进程: (a)自动产生 (b)手工输入 3. 在屏幕上显示每个作业/进程的执行情况。 4. 时间的流逝可用下面几种方法模拟:(a)按键盘,每按一次可以认为过一个时间单位 (b...
进程调度算法模拟程序设计,利用优先级进行调度, (1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。 (2)每个用来标识进程的进程控制块PCB可用结构来描述,包括...
Kernel 负责维护 6 个数据结构,包括时间 (Time), 处理器状态(CPUstate), 进 程 表 (PCBTable), 就 绪 队 列 (ReadyState), 等 待 队 列 (BlockedState), 运 行 进 程(RunningState)。 2. 虚拟指令 虚拟指令包括...
本资源包中的“酒店管理系统”可能是一个实际的应用案例,它可能涵盖了数据库设计、用户交互、资源调度等多个方面,其中很可能运用了银行家算法来确保系统的稳定运行,并使用了各种数据结构来高效地处理客户预订、...
在C#中,可以使用队列数据结构来存储进程,并按照它们进入就绪队列的顺序进行处理。 3. **短作业优先(Shortest Job First, SJF)**:该算法优先选择预计运行时间最短的进程。为了实现这个算法,我们需要预先知道每...
设计任务完成后,学生需编写设计进程表和课程设计报告,报告需符合规定的书写格式和内容要求。 设计步骤分为五个阶段:问题分析与任务定义,确定要解决的问题和设计目标;数据类型和系统设计,选择合适的数据结构和...
1. **进程数据结构**: 在操作系统中,每个进程都有一个关联的数据结构,通常称为进程控制块(Process Control Block, PCB)。PCB包含了描述进程状态、资源分配、调度信息等所有必要的信息。在本设计中,你需要...
在系统设计中,采用了数据结构——队列来实现进程队列的管理。队列是一种先进先出(FIFO)的数据结构,非常适合用于表示等待执行的进程队列。队列类包含插入(enqueue)、删除(dequeue)、查找(find)和显示...
10. 数据结构的应用非常广泛,例如在操作系统中使用栈来实现进程调度,在网络搜索引擎中使用哈希表来实现快速查找和排名。 数据结构历年考研真题题库提供了丰富的数据结构知识点,涵盖了算法、数据结构、存储结构等...