《Unix内核源码剖析》读书笔记01-用户模式与内核模式

什么是进程?
内核采用进程的概念对执行中的程序进行管理,一个进程对应一个执行中的程序。进程拥有唯一的进程ID,所以一个程序被执行多次,它们也是不同的进程
为什么需要切换这两种模式重点内容?
用户程序由用户进程处理,所以无法访问加载内核程序的内存区域 ,所以需要切换到内核模式执行某些功能,这些功能执行完后,处理器的模式又切换回用户模式啦···
处理器的两种模式是如何切换的?
PSW
MMU来实现内存映射的切换···【虚拟地址映射到用户的内存区域<—>内核的区域】
关于MMU
MMU(Memory Management Unit)用于地址变换以及访问权限管理。早期的UNIX系统中,以长度为8KB的段或者页为单位,对进程中需要的内存进行管理。试图访问不具有权限的内存时,MMU会引发一个陷入异常。MMU通过APR寄存器(页寄存器)对各段进行设定,并将虚拟地址转换为物理地址。
用户的空间和内核的空间如何交换数据?
一些函数:fubyte(),fuibyte(),fuword(),fuiword(),subyte(),suibyte(),suword()
suiword()

fubyte()
fuibyte()
fuword()
fuiword()
subyte()
suibyte()
suword()
suiword()

交换空间?
进程增多,内核将定期处于休眠状态,重要度低的进程会从内存中移到交换空间(swap out),交换空间中的进程到了可执行状态时当然也会重新恢复到内存中(swap in)
一些很重要的进程也会被移除到交换空间吗
进程的状态信息会由两种结构体实现:
proc user
proc结构体的实例不会被移出内存!!!
为什么proc 会受到优待?
由其重要性决定。【经常被访问】
proc结构体管理着进程相关的信息中需要经常被内核访问的那部分···
因为经常要被访问,所以把它移出到交换空间是极不明智的。
【切换进程时,内核会遍历proc结构体组成的数组,从中选择下一个要执行的进程】
那user呢?
user结构体保存着进程打开的文件和目录等信息,所以内存中保留当前执行程序的user就够了。
PS:内核可以通过全局变量u访问执行过程中的结构体

.globl _u
_u = 140000

进程在内存中是怎样存储的?
代码段和数据段作为两个连续的物理内存区域分配给进程。进程通过虚拟地址访问被分配的物理内存区域。
代码段是只读的,用来存放作为程序指令的机器代码。某个程序在被同时执行多次时,各进程共享同一个代码段。代码段通过数组text[]进行管理。长度有user.u_tsize表示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值