Linux课程总结

Linux课程总结
摘要由CSDN通过智能技术生成

一、课程总结

本课程是理论和代码相结合的授课模式,在先讲解一般操作系统的通用运行逻辑后再结合Linux内核源码具体学习相关操作系统功能逻辑的实现。

计算机系统的基本工作原理

1. 计算机的三个关键性方法机制
当代所有计算机平台的基础–冯诺伊曼机
先了解一下什么是存储程序计算机?
主要思想是讲程序存放在计算机存储器中,然后按照存储器中的存储程序的首地址执行程序的第一条指令,按照该程序中编写好的指令执行,直至程序结 束。
冯诺伊曼机的三大特点:
包含运算器、存储器、控制器、I/O
内部采用二进制来表示指令和数据。
将编写好的程序和数据先放入计算机中,然后启动。
核心是存储程序计算机。
2. 堆栈
作用:记录调用框架,传递参数,保存返回值,暂时存储局部变量    
相关寄存器:ESP+EBP(堆栈相关寄存器),CS:EIP(函数调用相关),EAX(返回值地址),还有传递参数相关
运行机制:通过pop,push两种操作,结合以上各种寄存器,实现函数调用,返回地址的记录,并且在函数调用完之后可以返回到原文中继续执行。

3. 中断–系统调用(这里只写相关部分的中断内容)
系统调用的总过程
触发系统调用时,用户态使用int$0x80指令触发中断,跳转到汇编代码system_call,触发中断机制,当前进程用户态的堆栈SS:ESP,CS:EIP EFLAGS保存在内核中,接下来执行到system_call的位置,将这段汇编用于保存现场,执行系统调用内核函数,函数调用完之后返回,恢复现场。最后iret将关键现场恢复到对应的寄存器中去,并回到int$0x80之后的下一条指令继续执行。
初始化过程:  
系统加载 start_kernel 开始,调用了 trap.c 中的 trap_init()函数对中断进行初始化。并且调用同一文件下的set_trap_gate()/set_system_gate()/set_intr_gate()等对中断描述符进行初始化。在进入保护模式之前, IDT 再次通过 setup_idt()函数进行初始化,在这里使用了 ignore_int()函数,是为了保护未初始化完成时发生异常不出错。然后调用 init_IRQ()函数,把中断描述附表的中断处理代码段地址设在在 interrupt 数组中,该数组指向同一个函数处理 common_interrup。    
为什么需要分级
系统体系架构分为用户态和内核态,用户态的权限低于核心态,也就是说代码掌控的范围收到了限制,如果没有权限级别的划分,程序员所有代码都可以使用特权指令,系统很容易出现崩溃的情况。

操作系统实现的功能之一-进程管理

1. 进程的的概念
运行一个程序的时候,操作系统需要描述其的运行过程,通过结构体task_struct{}来描述,统称为PCB。
2. 进程的描述信息有:
PID,进程状态,优先级,sp,上下文,内存指针。
3.创建进程–fork()
fork函数不同于其他函数,因为其返回次数的特殊性:fork会有两个返回值,一个为父亲进程的返回值,一个为子进程的
子进程返回0,父进程返回子进程的进程ID。
4.fork运行机制:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值