《Unix内核源码剖析》读书笔记01-用户模式与内核模式
本文关键词:Unix内核源码剖析,由笔耕文化传播整理发布。
《Unix内核源码剖析》读书笔记01-用户模式与内核模式
什么是进程? 内核采用进程的概念对执行中的程序进行管理,一个进程对应一个执行中的程序。进程拥有唯一的进程ID,所以一个程序被执行多次,它们也是不同的进程
为什么需要切换这两种模式重点内容? 用户程序由用户进程处理,所以无法访问加载内核程序的内存区域 ,所以需要切换到内核模式执行某些功能,这些功能执行完后,处理器的模式又切换回用户模式啦···
处理器的两种模式是如何切换的? PSW
MMU来实现内存映射的切换···【虚拟地址映射到用户的内存区域<—>内核的区域】
关于MMU MMU(Memory Management Unit)用于地址变换以及访问权限管理。早期的UNIX系统中,以长度为8KB的段或者页为单位,对进程中需要的内存进行管理。试图访问不具有权限的内存时,MMU会引发一个陷入异常。MMU通过APR寄存器(页寄存器)对各段进行设定,并将虚拟地址转换为物理地址。
用户的空间和内核的空间如何交换数据? 一些函数:fubyte(),fuibyte(),fuword(),fuiword(),subyte(),suibyte(),suword()
suiword()
[code]fubyte() fuibyte() fuword() fuiword() subyte() suibyte() suword() suiword()交换空间?
进程增多,内核将定期处于休眠状态,重要度低的进程会从内存中移到交换空间(swap out),交换空间中的进程到了可执行状态时当然也会重新恢复到内存中(swap in)
一些很重要的进程也会被移除到交换空间吗 进程的状态信息会由两种结构体实现:
proc user
proc结构体的实例不会被移出内存!!!
为什么proc 会受到优待? 由其重要性决定。【经常被访问】
proc结构体管理着进程相关的信息中需要经常被内核访问的那部分···
因为经常要被访问,所以把它移出到交换空间是极不明智的。
【切换进程时,内核会遍历proc结构体组成的数组,从中选择下一个要执行的进程】
那user呢? user结构体保存着进程打开的文件和目录等信息,所以内存中保留当前执行程序的user就够了。
PS:内核可以通过全局变量u访问执行过程中的结构体
[code].globl _u _u = 140000进程在内存中是怎样存储的?
代码段和数据段作为两个连续的物理内存区域分配给进程。进程通过虚拟地址访问被分配的物理内存区域。
代码段是只读的,用来存放作为程序指令的机器代码。某个程序在被同时执行多次时,各进程共享同一个代码段。代码段通过数组text[]进行管理。长度有user.u_tsize表示。
内核unix
猜你在找
本文关键词:Unix内核源码剖析,,由笔耕文化传播整理发布。
本文编号:247035
本文链接:https://www.wllwen.com/wenshubaike/mishujinen/247035.html