![](https://img-blog.csdnimg.cn/f1cb6bda76d340d0a83b8ad70cb76fe5.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
李志军老师实验
文章平均质量分 79
完成李志军老师的操作系统课程后,完成的实验,针对每个实验写成的文章
光电仪器设计学徒
成长是:高原-低谷模式——成长是跳跃式的,要经过量的积累,在积累的过程中,往往要伴随着扬弃,所以常常会跌入低谷。
展开
-
李治军老师操作系统实验5---信号量的实现和应用-信号量可以是-种资源的数量-进程看信号量实现同步即走走停停-信号临界区保护:共享数据的更新过程不能中断-此时切换去执行其他进程,切后进程看的是错信号量
本次实验的基本内容是:在 Ubuntu 下编写程序,用信号量解决生产者——消费者问题;在 0.11 中实现信号量,用生产者—消费者程序检验之。原创 2022-01-05 23:48:39 · 663 阅读 · 0 评论 -
Linux0.11文件系统的初始和使用
初始//// 安装根文件系统// 该函数属于系统初始化操作的一部分。函数首先初始化文件表数组file_table[]和超级块表(数组)// 然后读取根文件系统超级块,并取得文件系统根i节点。最后统计并显示出根文件系统上的可用资源// (空闲块数和空闲i节点数)。该函数会在系统开机进行初始化设置时被调用。void mount_root(void){ int i,free; struct super_block * p; struct m_inode * mi; // 若磁盘i节点结原创 2022-01-16 14:09:43 · 252 阅读 · 0 评论 -
Linux0.11内核--进程的调度(运行态(就绪态)和睡眠态之间的转换)
当进程等待资源或者事件时,就进入睡眠状态。有两种睡眠态,不可中断睡眠态(TASK_UNINTERRUPTIBLE)和可中断睡眠态(TASK_INTERRUPTIBLE)。处于可中断睡眠态的进程不光可以由wake_up直接唤醒,还可以由信号唤醒。在schedule()函数中,会把处于可中断睡眠态并且收到信号的进程变成运行态,使他参与调度选择。Linux0.11中进入可中断睡眠状态的方法有3中 调用interruptible_sleep_on()函数 调用sys_pause(...原创 2022-01-02 00:31:49 · 4330 阅读 · 2 评论 -
李治军操作系统实验4------基于内核栈切换的进程切换
研究本文,最好先看看《任务状态段TSS及TSS描述符、局部描述符表LDT及LDT描述符》https://blog.csdn.net/MJ_Lee/article/details/104419980/一基础信息1两种 实现任务切换的方法现在的 Linux 0.11 采用 TSS(后面会有详细论述)和一条指令就能完成任务切换,虽然简单,但这指令的执行时间却很长,在实现任务切换时大概需要 200 多个时钟周期。而通过堆栈实现任务切换可能要更快,而且采用堆栈的切换还可以使用指令流水的并行优化技术,同时又原创 2022-01-04 12:40:37 · 473 阅读 · 0 评论 -
李治军老师操作系统实验6----地址映射与共享-共享内存函数(shmget、shmat、shmctl)
本文参考https://blog.csdn.net/laoshuyudaohou/article/details/103843023一、实验目标深入理解操作系统的段、页式内存管理,深入理解段表、页表、逻辑地址、线性地址、物理地址等概念;实践段、页式内存管理的地址映射过程;编程实现段、页式内存管理上的内存共享,从而深入理解操作系统的内存管理。二、实验1内容和结果(一). 跟踪地址翻译过程 这节实验的目的是用 Bochs 的调试功能获取变量的虚拟地址映射的物理地址。 在 Linux-0.11原创 2022-01-09 16:30:23 · 1198 阅读 · 0 评论 -
李治军操作系统实验3---进程运行轨迹的跟踪与统计
#include <stdio.h>#include <unistd.h>#include <time.h>#include <sys/times.h>#define HZ 100void cpuio_bound(int last, int cpu_time, int io_time){ struct tms start_time, current_time; clock_t utime, stime; int sleep_time; wh原创 2021-12-26 19:35:48 · 1044 阅读 · 0 评论 -
操作系统让外设工作的思路---OUT指令--IN指令--中断---系统调用
从哪里开始这个故事呢?printf(“Host Name: %s”, name);Linux0.11的main.c中:// 下面函数产生格式化信息并输出到标准输出设备stdout(1),这里是指屏幕上显示。参数'*fmt'// 指定输出将采用的格式,具体可以看标准C语言书籍。该子程序正好是vsprintf如何使用一个// 简单例子。该程序使用vsprintf()将格式化的字符串放入printfbuf缓冲区,然后用write()将// 缓冲区的内容输出到标准设备(1--stdout).vspri..原创 2022-01-10 18:43:45 · 690 阅读 · 0 评论