一、内核导论

文件子系统:负责管理文件包括:分配文件空间、管理空闲空间,控制对文件的存取,为用户检索数据。

进程控制子系统: 进程同步;进程间通信;存储管理;进程调度。

硬件控制:负责处理中断及与机器通信,中断不是由特殊的进程服务的,而是由内核中特殊的函数服务的,这些特殊函数是在当前运行的进程的上下文被调用的

二、文件的内部表示:

1、索引节点表(inode table)

每个文件都有一个索引节点(inode)(包含文件所有者、存取权限、及其存取时间等信息)。但是,每个文件可以有多个名字,每个名字被称为一个link(链接)。一个进程使用名字检索一个文件时,内核每次分析文件名中的一个分量,检查该进程是否有检索路径中的目录,并且最终检索到该文件所对应的索引节点。如:open(“/fs2/mjb/rje/sourcefile”,1);当一个进程建立一个新文件时,内核分配给它一个尚未使用的索引节点。索引节点被存储在文件系统中(即磁盘索引节点表),但是当操作文件时,内核将它们读到内存索引节点表中,即:对系统中的每个活动的文件(被某个进程打开了),内存中索引节点表都包含一个条目。几个系统文件表条目可能对应于同一个内存索引节点表(不同进程打开同一个文件)以Linux为例,每个文件在内核中用inode结构体表示。

所有者

mjb

用户组

root

类型

整个文件

许可权

rwxr-xr-x

最近一次读文件时间

1984.10.23下午1:45

最近一次写文件时间

1984.10.22上午10:30

最近一次改变索引节点时间

1984.10.23下午1:30

大小

6030字节

2、文件表(file table)

是一个全局表,为系统中所有的进程共享。对每个活动的open, 它都包含一个条目。每个系统文件表的条目都包含文件偏移量、访问模式(读、写、or 读-写)以及指向它的文件描述符表的条目计数。以Linux为例,已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体

3、用户文件描述符表(user filedescriptor table)

是每个进程分配一个。标识着一个进程的所有打开了的文件。用户区的一部分,除非通过使用文件描述符的函数,否则程序无法对其进行访问。对进程中每个打开的文件,文件描述符表都包含一个条目。以Linux为例,每个进程用一个files_struct 结构体来记录文件描述符的使用情况,files_struct结构称为用户打开文件表,它是进程的私有数据。此外,每个进程用一个fs_struct结构体来描述进程的当前工作目录及其所在文件系统根目录下的索引节点。

父进程创建子进程,资源共享。每个进程都有唯一的标识,不同用户启动程序,产生不同的进程。

三、进程结构

一个进程是一个程序的执行,它是由一系列有格式的字节组成的,这些字节被解释成:机器指令、数据和栈区。当内核调度各个进程使之执行时,这些进程看似是同时执行的。而且,可以有多个进程是一个程序的实例。一个进程循着一个严格的指令序列执行,这个指令序列是自包含的,不会跳转到别的进程的指令序列上。进程通过系统调用与其他进程及外界进行通信。

进程包括以下八个:

1.标识号2.状态信息3.调度信息4.有关进程间通信信息5.进程链接信息6.时间定时器7.文件系统信息8.虚地址和物理内存之间的关系

其他:

1.   进程的标识:系统通过进程标识号(PID)唯一标识一个进程(是线性增长的)

2.   进程树及进程之间关系:0进程是一个特殊进程,它是在系统引导时被“手工”创建的,当它创建一个子进程(1进程-init进程,是系统中其他每个进程的祖先)之后,0进程就变成对换进程。

If(euid==0)判断是否为根用户。

除了0进程以外,每个进程都是被另外一个进程执行fork创建的。

3.   进程的上下文:

用户级上下文:由进程的正文、数据、用户栈和共享存储区组成

寄存器级上下文:程序计数器、处理机状态寄存器、栈指针、通用寄存器

系统级上下文:进程表表项、进程u区、本进程区表项、区表及页表、核心栈

4.   进程的控制

四、I/O子系统

1.UNIX/Linux系统包含两类设备:块设备、字符设备。每个设备有一个特殊文件名,可按文件方式存取。设备特殊文件有一个索引节点,在文件系统目录树中占据一个节点。设备特殊文件以存储在它的索引节点中的文件类型与其他文件相区别,其类型为:字符特殊文件或者 块特殊文件。当一个设备既有块接口又有字符接口时,由两个设备特殊文件所代表。

2.由块设备开关表(block deviceswitch table)和字符设备开关表(character device switch table)描述。每一种设备类型在表中有若干表项,这些表项在系统调用时引导内核转向适当的设备驱动程序接口设备文件的系统调用根据文件的类型通过这两个设备开关表汇集。对块设备,系统调用mount和umount也调用设备打开和关闭的过程块设备以及安装在文件系统上的文件的系统调用read和write调用高速缓冲算法,该算法又调用相应设备的策略过程。字符设备特殊文件的系统调用read,write,ioctl转向字符设备开关表中相应的过程。

3.是由机器相关的控制寄存器或操作设备的I/O指令,以及中断向量组成的:当一个设备中断出现时,系统识别发出中断的设备,并调用适当的中断处理程序。

(二)操作系统设计技术知识重点笔记相关推荐

  1. 网络技术基础知识点整理,计算机基础知识重点笔记

    0.本章思维导图: 1.网络层提供的两种服务 *网络层提供服务的特点:网络层向上只提供简单的.无连接的.尽最大努力交付的数据报服务,不保证可靠通信 虚电路服务:保证可靠通信,必须建立连接 思路:可靠通 ...

  2. ThinkPHP5 相关知识重点笔记

    一.相关配置 1.配置文件:config/config.php <?php return [ // 是否开启路由 'url_route_on'           => true, ]; ...

  3. 计算机专业知识笔记,事业单位计算机专业知识重点笔记

    (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口. 67数组 数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式.这些按序排列的同类数据元素的 ...

  4. UG二次开发技术的研究

    摘 要:UG软件是美国EDS公司开发的一套集CAD/CAM/CAE一体的高端软件.UG是一个通用软件,用户必须在此基础上进行二次开发,才能满足专门模具设计的需要,提高设计效率.本文探讨UG二次开发技术 ...

  5. 尚硅谷大数据技术Zookeeper教程-笔记01【Zookeeper(入门、本地安装、集群操作)】

    视频地址:[尚硅谷]大数据技术之Zookeeper 3.5.7版本教程_哔哩哔哩_bilibili 尚硅谷大数据技术Zookeeper教程-笔记01[Zookeeper(入门.本地安装.集群操作)] ...

  6. Examination:《计算机系统与网络技术》计算机三级考试重点笔记记录

    Examination:<计算机系统与网络技术>计算机三级考试重点笔记记录 目录 1.十进制转2进制 一.选择题 2.网友总结 二.综合题 三.应用题 1.根据IP地址.子网掩码地址,求出 ...

  7. 计算机应用技术考试重点,复习资料:2020年江苏自考计算机应用技术考前重点练习:单项选择题二...

    江苏自考网整理了2020年计算机应用技术单项选择题的考前重点复习资料,大家一起来看看吧. 第11题 在PowerPoint中,若要将线条限制在从其起始点开始,在以15度角为移动单位的各个方向 上进行绘 ...

  8. 技术新星决战巅峰,全国大学生操作系统设计赛圆满结束!

    在新兴技术百花齐放的今天,我国对自主知识产权的发展愈发重视.除了大量研发资金投入国产芯片.软件及5G等技术领域,基础软件的自主可控也成为必然趋势,其中国产操作系统的开发被定义成了一场收复失地的战争.要 ...

  9. 深入分析Java Web技术内幕读书笔记(二)浅析DNS域名解析过程

    上一篇文章<浅析Web请求过程>讲述的是如何发起HTTP请求,对于请求发起过程中很重要的一个步骤--DNS解析过程的描述是一带而过,本篇文章将跟着DNS解析过程来分析域名是如何解析的. 一 ...

最新文章

  1. 数据结构: 排序算法介绍
  2. zoj 3696 Alien's Organ(泊松分布)
  3. 八十、React中的容器组件和无状态组件
  4. postman面试_Postman 收费太贵了,我决定用 Postwoman。。。
  5. OpenCV输出版本和构建配置的实例(附完整代码)
  6. “GIS讲堂”第二课内容的公布
  7. 恒大全国降价,最低74折,接下来会有其他楼盘跟进降价吗?
  8. 南湖量子计算机科学课程,《量子计算》暑期课程开课通知
  9. 前端学习(804):替换字符串和转换为数组
  10. 第九大陆服务器未找到文件,第九大陆服务器优化规则说明 拍卖行和寄售功能关闭公告...
  11. html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)
  12. List集合的去重问题
  13. 重启framework命令及framework.jar引用
  14. Atitit.字节数组转字符串 base64 base16 Quoted-printable 编码原理设计 attilax 总结
  15. 如何不如计算机科学,第四轮学科评估结果:西交不如华中武大,你怎么看?很多网友表示不满!...
  16. 开源阅读书源_开源阅读——(免费)
  17. Python玩转图像格式转换
  18. OCCT里的Mesh网格计算流程
  19. C6中休假申请与人事软件的跨服务器数据库整合,已处理。
  20. 【OpenCV计算机视觉基础】HSB的色调、饱和度和亮度概念

热门文章

  1. c++中结构体套结构体用 = {0}初始化编译报错解决办法(用memset或者={})(error: invalid conversion)
  2. web前端入门学习 css(3)(背景相关)
  3. Intel Realsense D435 奇怪的现象记录:帧卡住,但wait_for_frame()不报错
  4. CUDA和cuDNN到底是啥关系?(cuDNN是基于CUDA的深度学习GPU加速库)
  5. Redis实现发布与订阅(转)
  6. redistemplate 设置永不过期_“密码已过期,拒绝访问!”
  7. 普罗米修斯笔记:初识Prometheus
  8. java中改变字符串编码
  9. Linux下安装Dubbo运行环境
  10. open-capacity-platform 项目启动