![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OS
文章平均质量分 85
zouliping123
这个作者很懒,什么都没留下…
展开
-
进程与线程;同步与互斥:事件,信号量,临界区,互斥量
进程 一个正在执行的程序 计算机中正在运行的程序的一个实例 可以分配给处理器并且由处理器执行的一个实体 由一个顺序执行的代码段、一个当前状态和一组相关系统资源所刻画的活动单元 进程是操作系统资源分配的基本单位 线程 进程中代码执行的一个序列 线程是操作系统可以进行运算调度的基本单位 进程、线程的区别 1. 划分尺度不同。线原创 2013-04-28 12:56:58 · 1770 阅读 · 0 评论 -
内存管理:分页,分段,段页结合
进程如何使用内存 进程是操作系统资源分配的最小单元。操作系统分配给进程的内存空间中包含五种段:数据段、代码段、BSS、堆、栈。 数据段:存放程序中的静态变量和已初始化且不为零的全局变量。 代码段:存放可执行文件的操作指令,代码段是只读的,不可进行写操作。这部分的区域在运行前已知其大小。 BSS段( Block Started By Symbol):存放未初始化的全局变量,在变量使用原创 2013-04-30 15:55:05 · 9613 阅读 · 0 评论 -
内核级线程
不知不觉已经是最后一次的实验了。这一次实验的内容是: 在Ubuntu下编写多线程的应用程序memtest.c,解决一个可并行运算的问题。在Linux 0.11的进程管理基础上,按照POSIX Threads标准实现内核级线程,使其能支持memtest.c的运行 说来也很遗憾,这个实验我只完成了用户态的实现,内核级完全没有考虑去实现(时间、精力等等多方面的问题)。如果真的要把内核原创 2012-12-30 20:20:12 · 1968 阅读 · 5 评论 -
proc文件系统的实现
第七次实验的内容是 在Linux 0.11上实现procfs(proc文件系统)内的psinfo结点。当读取此结点的内容时,可得到系统当前所有进程的状态信息。例如,用cat命令显示/proc/psinfo的内容,可得到: # cat /proc/psinfo pid state father counter start_time 0 1 -1 0 0 1 1 0 28 1 4 1 1原创 2012-12-24 13:30:38 · 3535 阅读 · 0 评论 -
字符显示的控制
第六次实验可以算是很简单的一次了,只要知道了0.11如何响应你的键盘事件,一切问题都迎刃而解了。实现这个实验的方法有很多,我的也是仅供参考,其他方法可能还有些是涉及到修改汇编代码的。 首先,要做的就是在linux-0.11\kernel\chr_drv文件夹下的keyboard.S文件中,将第245行的call show_stat注释掉或者删掉都可以。在原来的代码中,按下F12便是调用了keyb原创 2012-12-15 18:36:36 · 1287 阅读 · 0 评论 -
地址映射与共享
本次已经是OS的第五次实验了,这次要做的内容有: 用Bochs调试工具跟踪Linux 0.11的地址翻译(地址映射)过程,了解IA-32和Linux 0.11的内容管理机制;在Ubuntu上编写多进程的生产者—消费者程序,用共享内存做缓冲区;在信号量实验的基础上,为Linux 0.11增加共享内存功能,并将生产者—消费者程序移植到Linux 0.11。 第一个内容,跟踪地址的翻译过程。原创 2012-12-09 19:08:11 · 3646 阅读 · 1 评论 -
信号量的实现和应用
第四次实验是一道坎啊,话说当年差点没做出来,各种纠结的问题都出现了。这一次的实验涉及到前几次实验的小综合,所以要求有点高。建议一定要认真仔细多阅读几遍指导书。实验的内容简单来说就是用信号量来实现生产者和消费者问题。建立一个生产者进程,N个消费者进程(N>1);用文件建立一个共享缓冲区;生产者进程依次向缓冲区写入整数0,1,2,...,M,M>=500;消费者进程从缓冲区读数,每次读一个,并将读出的原创 2012-12-01 14:37:46 · 2924 阅读 · 0 评论 -
进程运行轨迹的跟踪与统计
<!-- p {margin-bottom:0.21cm} --> 在做这次实验的时候,一定要耐心一点。我当时做的时候就因为在修改的过程中出现了一点小小的失误,导致了整个实验重新来过一遍。为了避免这样的情况发生,一定要记住修改的时候,要注意修改的内容无误。 本次实验包括如下三个方面的内容: 基于模板“process.c”编写多进程的样本程序,实现如原创 2012-11-22 21:16:22 · 4421 阅读 · 5 评论 -
系统调用
由于时间有些久远了,所以其中的内容可能稍有不当和具有一定的不完整性,敬请见谅! 操作系统的第二个实验是在0.11下添加两个系统调用,iam和whoami. iam() 第一个系统调用是iam(),其原型为: int iam(const char * name); 完成的功能是将字符串参数name的内容拷贝到内核中保存下来。要求name的长度不能超过23个字符。返回值是拷贝的字符数原创 2012-11-12 13:43:24 · 1561 阅读 · 1 评论