![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
-------操作系统
文章平均质量分 80
计算机的小粽子
2019年本科毕业于湖南大学,目前任职字节跳动
展开
-
读者-写者问题(三种实现方案)
第一种 读者优先方案:#include<pthread.h>#include<semaphore.h>#include<unistd.h>#include<stdio.h>#include<stdlib.h>#include<string>using namespace std;sem_t rmutex,wmutex;int readcount=0,writecount=0,coun原创 2017-10-14 13:59:47 · 4888 阅读 · 0 评论 -
ucore lab8
练习0:填写已有实验本实验依赖实验1/2/3/4/5/6/7。请把你做的实验1/2/3/4/5/6/7的代码填入本实验中代码中 有“LAB1”/“LAB2”/“LAB3”/“LAB4”/“LAB5”/“LAB6” /“LAB7”的注释相应部分。并确保编译通过。注意:为了能够正确执行lab8的测试应用程序,可能需对已完成的实验1/2/3/4/5/6/7的代码进行进一步改进。练习1: 完成读文件操作的原创 2018-01-02 20:56:05 · 3534 阅读 · 0 评论 -
ucore lab3
练习0:填写已有实验本实验依赖实验1/2。请把你做的实验1/2的代码填入本实验中代码中有“LAB1”,“LAB2”的注释相应部分。练习1:给未被映射的地址映射上物理页完成do_pgfault(mm/vmm.c)函数,给未被映射的地址映射上物理页。设置访问权限 的时候需要参考页面所在 VMA 的权限,同时需要注意映射物理页时需要操作内存控制 结构所指定的页表,而不是内核的页表。注意:在LAB2 EXE原创 2018-01-02 19:53:19 · 6355 阅读 · 1 评论 -
ucore lab7
练习0:填写已有实验本实验依赖实验1/2/3/4/5/6。请把你做的实验1/2/3/4/5/6的代码填入本实验中代码中有 “LAB1” /“LAB2”/ “LAB3” /“LAB4” /“LAB5” /“LAB6”的注释相应部分。并确保编译通过。注意:为了能够正确执行lab7的测试应用程序,可能需对已完成的实验1/2/3/4/5/6的代码进行进一步改进。练习1: 理解内核级信号量的实现和基于内核级信原创 2017-12-20 15:36:44 · 3108 阅读 · 0 评论 -
Paging-multilevel-translate
1 首先查看一些基本的假设:page size: 32 bytes (2 ^ 5 =32)virtual address space : 1024 pages (1024 * 32 bytes = 32KB)physical memory : 128 pages (128 * 32 bytes = 4 KB)2 通过上面的参数我们可以得到:virtual原创 2017-12-14 13:14:57 · 961 阅读 · 0 评论 -
ucore lab6
练习0:填写已有实验本实验依赖实验1/2/3/4/5。请把你做的实验2/3/4/5的代码填入本实验中代码中有“LAB1”/“LAB2”/“LAB3”/“LAB4”“LAB5”的注释相应部分。并确保编译通过。注意:为了能够正确执行lab6的测试应用程序,可能需对已完成的实验1/2/3/4/5的代码进行进一步改进。1 改进proc_struct:struct proc_struct { //原创 2017-12-12 20:07:13 · 2587 阅读 · 0 评论 -
ucore lab5
练习0:填写已有实验本实验依赖实验1/2/3/4。请把你做的实验1/2/3/4的代码填入本实验中代码中有“LAB1”/“LAB2”/“LAB3”/“LAB4”的注释相应部分。注意:为了能够正确执行lab5的测试应用程序,可能需对已完成的实验1/2/3/4的代码进行进一步改进。改进的alloc_proc函数static struct proc_struct *alloc_proc(void) {原创 2017-12-04 14:18:10 · 5917 阅读 · 1 评论 -
ucore lab4
练习0:填写已有实验本实验依赖实验1/2/3。请把你做的实验1/2/3的代码填入本实验中代码中有“LAB1”,“LAB2”,“LAB3”的注释相应部分。练习1:分配并初始化一个进程控制块(需要编码)说明proc_struct中 struct context context 和 struct trapframe *tf 成员变量含义和在本实验中的作用是啥?结构体定义:enum proc_state {原创 2017-12-01 23:14:07 · 4701 阅读 · 0 评论 -
Paging-linear-translate.py
1 作业要求通过运行 paging-linear-translate.py 这个程序,来理解进程虚拟地址到物理地址的转换,通过不同的参数来对进程地址空间,页表进行修改。2 具体操作2.1 参数说明Options:-h, --help 帮助信息-s SEED, --seed=SEED 改变seed的值-a ASIZE, -原创 2017-12-08 12:08:23 · 936 阅读 · 0 评论 -
ucore lab1
[练习1][练习1.1] 操作系统镜像文件 ucore.img 是如何一步一步生成的?(需要比较详细地解释 Makefile 中每一条相关命令和命令参数的含义,以及说明命令导致的结果)输入make V= (对每条命令进行了精简)+ cc kern/init/init.c //编译init.c gcc -c kern/init/init.c -o obj/kern/in原创 2017-11-21 19:12:53 · 12977 阅读 · 1 评论 -
操作系统概念第6章题目
第6章6.1代码划分do{ flag[i]=true; while(flag[j]){ if(turn==j){ flag[i]=false; while(turn==j) //ES ; flag[i]=true; } } // CS turn=j; flag[i]=false; //EXS //RS原创 2017-11-05 13:34:19 · 1525 阅读 · 0 评论 -
进程间通信之共享内存
#include<iostream>#include<stdio.h>#include<unistd.h>#include<sys/wait.h>//#include<sys/types.h>#include<stdlib.h>using namespace std;int main(int argc,char *argv[]){ if(argc!=2) {printf("请输入原创 2017-10-12 19:18:42 · 167 阅读 · 0 评论 -
多线程 c/s程序
服务端:#include<iostream>#include<unistd.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/in原创 2017-10-14 14:24:25 · 1737 阅读 · 0 评论 -
ucore lab2
练习0:填写已有实验本实验依赖实验1。请把你做的实验1的代码填入本实验中代码中有“LAB1”的注释相应部分。提示:可采用diff和patch工具进行半自动的合并(merge),也可用一些图形化的比较/merge工具来手动合并,比如meld,eclipse中的diff/merge工具,understand中的diff/merge工具等。练习1:实现 first-fit 连续物理内存分配算法算法原理要求原创 2017-12-27 16:09:54 · 8965 阅读 · 2 评论