- 博客(7)
- 收藏
- 关注
原创 实验3-系统调用
一、实验目的建立对系统调用接口的深入认识;掌握系统调用的基本过程;能完成系统调用的全面控制;为后续实验做准备。二、实验步骤1.修改unistd.h 图片描述 其中新增代码为2.修改include/linux/sys.h 进入/home/shiyanlou/oslab/linux-0.11/中修改,有两个点需要修改:1)仿照前面各个系统调用的写法,添加如下代码extern int sys_iam();extern int sys_whoami();2)在sys_call_table中新加
2020-08-25 17:00:03
337
原创 实验9-proc文件系统的实现
实验九实验目的掌握虚拟文件系统的实现原理实践文件、目录、文件系统等概念实验内容在Linux 0.11上实现procfs(proc文件系统)内的psinfo结点。当读取此结点的内容时,可得到系统当前所有进程的状态信息。例如,用cat命令显示/proc/psinfo的内容,可得到:$ cat /proc/psinfopid state father counter start_time0 1 -1 0 01 1 0 28
2020-08-25 16:35:45
559
原创 实验8-终端设备的控制
实验报告1. 实验内容本实验的基本内容是修改 Linux 0.11 的终端设备处理代码,对键盘输入和字符显示进行非常规的控制。在初始状态,一切如常。用户按一次 F12 后,把应用程序向终端输出所有字母都替换为“*”。用户再按一次 F12,又恢复正常。第三次按 F12,再进行输出替换。依此类推。以 ls 命令为例:正常情况:# lshello.c hello.o hello第一次按 F12,然后输入 ls:# *******.* *****.* *****第二次按 F12,然后输入
2020-08-25 16:33:01
543
1
原创 实验7-地址映射与共享
实验报告1.实验内容用 Bochs 调试工具跟踪 Linux 0.11 的地址翻译(地址映射)过程,了解 IA-32 和 Linux 0.11 的内存管理机制;在 Ubuntu 上编写多进程的生产者—消费者程序,用共享内存做缓冲区;在信号量实验的基础上,为 Linux 0.11 增加共享内存功能,并将生产者—消费者程序移植到 Linux 0.11。2.实验目的深入理解操作系统的段、页式内存管理,深入理解段表、页表、逻辑地址、线性地址、物理地址等概念;实践段、页式内存管理的地址映射过程;
2020-08-25 16:31:41
560
原创 实验6-信号量的实现和应用
实验报告1.实验内容在 Ubuntu 下编写程序,用信号量解决生产者——消费者问题;在 0.11 中实现信号量,用生产者—消费者程序检验之。2.实验目的加深对进程同步与互斥概念的认识;掌握信号量的使用,并应用它解决生产者——消费者问题;掌握信号量的实现原理。3.实验步骤3.1 用信号量解决生产者—消费者问题在 Ubuntu 上编写应用程序“pc.c”,解决经典的生产者—消费者问题,完成下面的功能:建立一个生产者进程,N 个消费者进程(N>1);用文件建立一个共享缓冲区
2020-08-25 16:27:12
864
原创 实验5-基于内核栈切换的进程切换
实验报告1. 实验内容修改进程切换方式,由TSS模式,切换到栈模式。2. 实验步骤修改schd.c 中的switch_to 函数;原先此函数中使用ljmp到tr寄存器指定的描述符中获取tss结构体的的地址,并map的寄存器中(包括CS:IP,SS:SP,AX,CX,DX…);现在使用栈模式即需使在代码中手动将esp由旧的内核栈地址切换为新栈地址,然后pop出相应寄存器,直到完成ret指令,从新栈中获取新进程的eip,cpu才执行新进程。另外定义了一个tss的全局结构体变量,用以在cpu执行
2020-08-25 15:52:12
421
原创 实验4-进程运行轨迹的跟踪与统计
一、实验目的掌握 Linux 下的多进程编程技术;通过对进程运行轨迹的跟踪来形象化进程的概念;在进程运行轨迹跟踪的基础上进行相应的数据统计,从而能对进程调度算法进行实际的量化评价,更进一步加深对调度和调度算法的理解,获得能在实际操作系统上对调度算法进行实验数据对比的直接经验。二、实验内容基于模板 process.c 编写多进程的样本程序,实现如下功能:所有子进程都并行运行,每个子进程的实际运行时间一般不超过 30 秒;父进程向标准输出打印所有子进程的 id,并在所有子进程都退
2020-08-25 15:45:00
532
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人