
操作系统实验
文章平均质量分 57
三つ叶
这个作者很懒,什么都没留下…
展开
-
fgets和read区别
char string[20];int main(){ write(1, ">", 1);// read(0, string, sizeof string); fgets(string, sizeof string, stdin); printf("%s\n", string); printf("sizeof: %ld \n", sizeof string); for (int i = 0; i < sizeof string; i原创 2021-06-25 00:14:25 · 298 阅读 · 0 评论 -
多线程编程——pthread
1 创建线程1.1 原型#include <pthread.h>int pthread_create(pthread_t *tid, pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);1.2 功能创建一个线程新线程从start_routine开始执行新线程的ID保存在tid指向的位置1.3 参数参数功能tid该参数是一个指针, 新线程的ID保存在tid指向的位置att原创 2021-05-30 13:39:32 · 1772 阅读 · 0 评论 -
操作系统实验03——进程运行轨迹的跟踪与统计
实验目的这次实验的目的是跟踪进程的运行轨迹,记录下进程的状态及其变化实现方法实现方法在于对找出每一次进程的变化,并对应添加上相应的内核函数,使其能够打印出进程信息到process.log中实验步骤这一步是在进程切换到用户态,开始创建process.log文件,以记录进程,注意除了创建process.log文件外,还需将init()内加载文件系统的语句提前至此。这里我们在fork.c文件里面,找出进程状态变化的语句p->state=TASK_RUNNING; 并且通过fprintk()内原创 2021-05-12 20:51:37 · 474 阅读 · 0 评论 -
操作系统实验02——添加系统调用(理论知识)
命令行、图形按钮、应用程序操作系统接口表现为函数调用,又由系统提供,所以称为操作系统——System_Call系统调用:用户程序内核内存用户程序为什么不能直接访问内核内存?不能随意调用数据,不能随意的jmp。凭什么? ---------------------> 硬件设计,将内核段和用户段隔离DPL 目标段的特权级CPL 当前段的特权级如何进入内核?----------------------> 中断指令int以实现一个whoaim来深入理解系统调用过程对于i原创 2021-05-10 09:24:23 · 344 阅读 · 1 评论 -
操作系统实验02——添加系统调用(实验)
系统调用过程(以printf实现为例):C函数库将printf(“Hello World”)变成 write(1, buf, 11);接下来是真正系统调用的过程,write展开成一段包含int 0x80的代码,宏展开。主要完成int 0x80mov __NR_write, %eaxmov fd, %ebxmov buff, %ecxmov count, %edxeax存放系统调用号, ebx, ecx, edx存放携带的参数解释执行int 0x80, 通过查找IDT表中的0x80对原创 2021-05-09 21:42:38 · 1291 阅读 · 2 评论 -
操作系统实验01——环境启动(实验)
环境准备: https://gitee.com/cn-guoziyang/oslab/步骤:每次重置目录 ./init进入linux0.11后 make clean 后再 make allcd ~/oslab 然后 ./run注意点:本次实验按照要求来,不用每次都make all再run如在完成修改bootsect.s后依次执行:$ as86 -0 -a -o bootsect.o bootsect.s$ ld86 -0 -s -o bootsect bootsect.o$ dd原创 2021-05-08 21:48:14 · 355 阅读 · 0 评论 -
操作系统实验01——环境启动(知识准备)
环境准备: https://gitee.com/cn-guoziyang/oslab/步骤:每次重置目录 ./init进入linux0.11后 make clean 后再 make allcd ~/oslab 然后 ./run原创 2021-05-02 08:58:22 · 208 阅读 · 0 评论 -
操作系统实验00——基本概念
Linux内核映像文件Linux内核在PC上以文件的形式存在(保存成磁盘文件形式),就是所谓的“映像文件”。Linux内核映像文件最终是要烧录到目标板的flash中。Linux 内核映像文件有两种:一种是非压缩版本,叫Image;另一种是它的压缩版本,叫zImage。zImage是Image经过压缩形成的,所以它的大小比Image小。为了能使用zImage这个压缩版本,必须在它的开头加上解压缩的代码,将zImage 解压缩之后才能执行,因此它的执行速度比Image要慢。但考虑到嵌入式系统的存储空容量一般原创 2021-05-02 08:53:04 · 116 阅读 · 0 评论