首页 > 其他 > 详细

课程学习总结报告

时间:2020-07-09 18:55:47      阅读:62      评论:0      收藏:0      [点我收藏+]

一、系统调用

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。

技术分享图片

 

 

 

Linux 操作系统的体系架构分为?户态和内核态。
在内核态,所有的指令包括特权指令都可以执行。相应的,在?户态(低级别指令),代码能够掌控的范围会受到限制。而从用户空间转换到内核空间通过系统调用实现。
?般来说,从?户态进?内核态是由中断触发的,可能是硬件中断,在?户态进程执?时,硬件中断信号到来,进?内核态,就会执?这个中断对应的中断服务例程。也可能是?户态程序执?过程中,调?了?个系统调?,陷?了内核态,叫作陷阱。所以,系统调?是特殊的中断。
 
系统调?的库函数就是我们使?的操作系统提供的 API(应?程序编程接?),API 只是函数定义。系统调?是通过特定的软件中断(陷阱 trap)向内核发出服务请求,int $0x80和syscall指令的执?就会触发?个系统调?。这二者间最明显的区别在于,系统调用会进入内核态,而库函数则未必。
 
LINUX系统的一般执行过程:
(1)正在运行的用户态进程X
(2)发生中断
(3)SAVE_ALL,保存现场,此时完成了中断上下?切换,即从进程X的?户态到进程X的内核态。
(4)中断处理过程中或中断返回前调?了schedule函数
(5)中断上下文恢复
(6)从Y进程的内核堆栈中弹出(3)中对应的压栈内容
(7)继续运??户态进程Y

 
二、进程管理
在操作系统原理中,我们通过进程控制块PCB描述进程。为了管理进程,内核要描述进程的结构,我们也称其为进程描述符,进程描述符直接或间接提供了进程相关的所有信息。在Linux内核中??个数据结构struct task_struct来描述进程,其中state是进程状态,stack是堆栈等。
Linux中进程的状态有:TASK_RUNNING(当进程处于这个状态时,它是可运行的,也就是就绪态,是否在运?取决于它有没有获得CPU的控制权),
tsk->exit_state(进程的终?状态)TASK_INTERRUPTIBLE(可以被信号和wake_up()唤醒的)和TASK_UNINTERRUPTIBLE(只能被wake_up()唤醒)。
 
struct list_head tasks把所有的进程?双向链表链起来,?且还会头尾相连把所有的进程?双向循环链表链起来。进程存在父子兄弟关系,
这些??、兄弟之间复杂的链表关系都通过指针或双向链表关联起来了这样设计数据结构是为了?便在内核代码中快速获取当前进程的??兄弟进程的信息。
技术分享图片

 

 进程的创建:就是调用do_fork()把当前进程的描述符等相关进程资源复制?份,从而产?一个?进程,并根据?进程的需要对复制的进程描述符做?些修改,然后把创建好的?进程放入运行队列

进程调度:
Linux内核通过schedule函数实现进程调度,schedule函数负责在运?队列中选择?个进程,然后把它切换到CPU上执?。调?schedule函数的时机主要分为两类:中断处理过程中的进程调度时机,内核线程主动调?schedule()。
 
进程调度策略:
SCHED_FIFO(先进先出)
SCHED_RR(时间片轮转)
SCHED_NORMAL(按优先级占不同?例的时间)
CFS(完全公平调度算法)
 
三、文件管理

Linux与其他类Unix系统一样,采用虚拟文件系统VFS来达到支持多种文件系统格式的目标

技术分享图片

 

 VFS的基本思想:引入一个通用文件模型,这个模型能够表示所有支持的文件系统。

通用文件模型有下列对象类型组成:超级块对象、索引节点对象、文件对象、目录项对象

四、举例说明

读文件

  1. 进程调用库函数向内核发起读文件请求;
  2. 内核通过检查进程的文件描述符定位到虚拟文件系统的已打开文件列表表项;
  3. 调用该文件可用的系统调用函数read();
  4. read()函数通过文件表项链接到目录项模块,根据传入的文件路径,在目录项模块中检索,找到该文件的inode;
  5. 在inode中,通过文件内容偏移量计算出要读取的页;
  6. 通过inode找到文件对应的address_space;
  7. 在address_space中访问该文件的页缓存树,查找对应的页缓存结点:
    (1)如果页缓存命中,那么直接返回文件内容;
    (2)如果页缓存缺失,那么产生一个页缺失异常,创建一个页缓存页,同时通过inode找到文件该页的磁盘地址,读取相应的页填充该缓存页;重新进行第6步查找页缓存;

课程学习总结报告

原文:https://www.cnblogs.com/yhhh/p/13275098.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!