| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 《深入理解linux内核》-1-绪论 -> 正文阅读 |
|
[系统运维]《深入理解linux内核》-1-绪论 |
文章目录
记录重点、还未掌握、个人理解以及有意思的 书本对应linux版本的源码下载地址: http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v2.6/ 一、绪论本章多是一些基本概念的补全,在操作系统的基本知识层面,后面会探究其原理实现 1. linux的设计上与其他类Unix的差异/竞争点在哪?主要差异见书: P9, 这里记一下重点:
2. 为什么会产生用户态内核态?类Unix操作系统不给用户程序直接访问物理硬件的权利,在其中加入了一层软件集合,也就是操作系统或者内核 随之而来的就是对引入两种不同的执行模式:用户程序的非特权模式和内核的特权模式,也就是问题所述的两种状态 3. 内核的体系结构?单块结构与微内核?优劣势?linux是如何设计的?两种体系结构:
微内核程序的优劣可以总结为:
Linux的设计: 目标是达到微内核的许多优点并不影响效率(俗话说就是通吃) 做法:
优点:
4. Unix文件系统中,多个进程打开同一个文件,操作系统底层会实现同步机制吗?结论:并不会 一个文件被打开后,系统调用会创建一个被打开文件的文件对象并返回文件描述符,一个文件对象可能由同一个进程的多个文件描述符描述 多个进程打开同一个文件,Unix文件系统会给每个进程分配单独的文件对象和单独的文件描述符,并且不提供任何形式的同步机制
如果想要同步可以通过flock()系统调用实现进程在整个文件或者部分文件上的 5. 内核访问打开的文件的机制?不管是read还是write默认都是顺序访问,会用文件指针将本次的访问的结束位置保存用于下一次的继续顺序访问 文件指针保存在哪?=> 放在打开的文件对象中 6. 一个用户进程切换内核模式后还是那个进程吗?不会改变,只是特权模式的改变 一个进程在某一个时刻只能处于内核模式和用户模式二者之一 7. Unix内核是一系列内核进程吗?参考内核的体系结构 内核本身不是一个进程而是进程的管理者,其可以包含一些内核进线程或特权进程,因为这些进程/线程始终在内核态运行伴随着系统关闭而关闭,所以其运行依赖的内核程序属于内核,所以其也属于内核 简单来说就是:内核不单单是一个内核态进程,而是系统进程的管理者,其也包含了管理所需要的一些内核线程或特权进程 8. 说说详细的进程上下文切换吧?以一个系统调用为例子: 补充:
9. 进程不在CPU执行的时候在干嘛?在等待,准确的说在不同事件的等待队列中(内核提供的),内核通过进程描述符的队列实现这些等待不同事件的idle进程 10. 内核的可重入性是什么?怎样实现的?可重入性表示内核提供了多个进程同时进入内核态执行的条件,目前所有的Unix系统都是支持的 保证可重入性的主要问题/挑战在哪?
内核如何去实现这样的可重入性呢?=> 内核同步
11. 内核控制路径是什么?路径的改变会受到哪些影响呢?内核控制路径(
所以,进程系统调用、CPU处理中断、异常、进程优先级抢占时内核都会切换到另一个的控制路径即另一个的一段指令序列
12. 内核的可重入性同步与进程公共数据同步有什么不同?几乎差不多,都是通过底层的原子性操作支持实现上层同步,方式包括锁、信号量等等,只不过在内核代码设计中可能要加上内核前缀 : ),例如内核信号量 13. IPC进程间通信的方式在内核角度是如何实现的?内核将IPC看作一个资源来实现,类似于文件,IPC资源是不变的需要创建者手动释放 14. fork的父子进程如何产生关联/识别到对方?fork的父子进程结构中有两个指针,分别指向本进程的父进程与子进程,如此产生联系 15. SIGCHLD信号是什么时候发送的?我们都知道父进程不合适的处理子进程的 说到僵尸进程,那么孤儿进程又是如何产生的呢? 当一个进程调用 16. 什么是进程组呢?什么是登陆会话?如字面意思,其表示一系列进程的组合,可以抽象为“作业(
登陆会话(
一般在linux中就是
进程、进程组、 可以说 17. 内存分配的延迟处理Unix操作系统都采用了请求调页( 类似的延迟处理也在调用 同样的fork的CoW机制也是如此,被复制的子进程拥有同样于父进程的页映射(指向同一个物理页框),并且这些页框都标记为只读,一旦写入就会发生异常错误,随后初始化新的页框 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/30 1:56:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |