`
highsky
  • 浏览: 269656 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

想过如何设计进程的数据结构吗?

阅读更多
   今天同学去面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完成。
分享到:
评论

相关推荐

    操作系统 进程及其资源管理

    根据数据结构,用 C 语言设计实现了相应函数,如创建进程、删除进程、 挂起进程、唤醒进程等功能。设计函数实现了调度程序,在每个进程操作执 行完毕后,自动调用执行。所展示的程序运行结果图,为模拟单核单 CPU 中...

    操作系统课程设计:进程/作业调度

    1. 建立作业的数据结构描述 2. 使用两种方式产生作业/进程: (a)自动产生 (b)手工输入 3. 在屏幕上显示每个作业/进程的执行情况。 4. 时间的流逝可用下面几种方法模拟:(a)按键盘,每按一次可以认为过一个时间单位 (b...

    进程调度算法模拟程序设计

    进程调度算法模拟程序设计,利用优先级进行调度, (1)用C语言(或其它语言,如Java)实现对N个进程采用某种进程调度算法(如动态优先权调度)的调度。 (2)每个用来标识进程的进程控制块PCB可用结构来描述,包括...

    数据结构实验书

    数据结构c语言版实验指导,问题分析,算法步骤,源程序俱全

    数据结构实验代码

    这是数据结构的实验代码,本人亲测可用,有树、链表、图等

    进程作业调度

    1. 建立作业的数据结构描述 2. 使用两种方式产生作业/进程: (a)自动产生 (b)手工输入 3. 在屏幕上显示每个作业/进程的执行情况。 4. 时间的流逝可用下面几种方法模拟:(a)按键盘,每按一次可以认为过一个时间单位 (b...

    数据结构1800试题

    数据结构1800试题,这些题做着还不错,初学者应学习一下,很有帮助的,

    天津理工大学操作系统实验报告一+代码

    实验内容: 1.设定系统中有6个进程,每一个进程用一个数据结构(类似PCB)表示。 2.输入每个进程优先权和运行时间。...6.运行设计程序,显示每次被选中进程的进程名和进程数据结构的动态变化过程。

    进程状态模拟转换.docx

    操作系统课程设计文档,内容为进程...有进程的标识、进程的具体数据结构由自己设定 利用队列的概念。设置就绪队列和阻塞队列 至少模拟四种条件下的进程状态转换,即进程调度、时间片用完、I/O请求和I/O完成等四种条件

    多进程并发环境及调度算法的仿真设计

    仿真设计进程 PCB、PCB表的数据结构 :1.1仿真进程并发的调度环境,设计和实现 PCB 控制块、进程创建、进程切 换、进程并发、进程阻塞和进程调度的算法 1.2 掌握进程调度的优先权法、时间片轮转法和多级反馈队列...

    操作系统课程设计(进程管理C++实现)

    ⑴ 自定义内存中进程管理可执行文件*.exe的数据结构; ⑵ 能够动态创建进程、悬挂进程、杀死进程; ⑶ 可以为任意一当前进程创建子进程; ⑷ 显示系统当前各个进程的状态。

    进程资源分配 银行家算法

    银行家算法中的数据结构,进程资源分配情况,找出安全序列

    操作系统课程设计银行家算法(附详细报告)

    银行家算法中的数据结构 (1)可利用资源向量Available(一维数组) 是一个含有m个元素,其中的每一个元素代表一类可利用的资源数目,其初值是系统中所配置的该类全部可用资源数目。如果Available[j]=k, 表示系统中...

    数据结构算法与应用-C++语言描述(3)

    数据结构算法与应用-C++语言描述

    操作系统-数据结构-Linux-设计模式.pdf

    本人2021年操作系统-数据结构-Linux-设计模式秋招面试题个人总结,包括死锁、进程线程、linux常用命令、常考数据结构和设计模式等,涵盖大中厂面试题,答案仅供参考。

    实习二 进程调度算法的设计(内附代码)

    进程通过定义一个进程控制块的数据结构(PCB)来表示;每个进程需要赋予进程 ID、进程到达时间、进程需要运行的总时间的属性;在 RR 中,以 1 为时间片单位;运行时,输入若干个进程序列,按照时间片输出其执行序列...

    进程调度模拟设计(操作系统课程设计)

    进程调度模拟设计(操作系统课程设计),我用C++实现的,使用队列作为数据结构。

    c语言模拟进程

    ② 设计进程就绪队列及数据结构; ③ 设计进程调度算法,并画出程序流程图; ④ 设计输入数据和输出格式; 结构格式:当前正运行的进程:0 当前就绪队列:2,1,3,4 ⑤ 编程上机,验证结果。

    操作系统上机实验报告 进程状态转换及其PCB的变化

    3) 合理设计与进程PCB相对应的数据结构。PCB的内容要涵盖进程的基本信息、控制信息、资源需求及现场信息。 4) 设计出可视性较好的界面,应能反映出进程状态的变化引起的对应PCB内容、组织结构的变化。 5) 代码书写要...

    银行家算法

    1. 设计进程管理数据结构 2. 输入系统资源当前的使用情况,如:系统当前的进程数、各进程的资源信息等 3. 设计安全性检查算法检查系统状态是否安全 4. 动态申请资源,设计银行家算法,在银行家算法中调用安全性检查...

Global site tag (gtag.js) - Google Analytics