
操作系统
Salvete
Salvete!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MIT_6.828_2018_Homework:bigger files for xv6
地址:bigger files for xv6题目要求:原来的一个文件的最大大小为12+128=140个blocks,现在将前12个直接块取一个出来存放另一个“doubly-indirect”块,这样就新增了128*128-1个块了。有点类似与计算机组成原理里面的存储器间接寻址。准备工作首先修改Makefile:CPUS := 1加入QEMUEXTRA = -snapshot修改param.h: #define FSSIZE 20000 // size of file原创 2020-05-12 11:17:38 · 918 阅读 · 0 评论 -
MIT_6.828_2018_Homework:Barriers
地址:Barriers这次作业的目的是实现线程间的同步。具体实现参考别人如下:static void barrier(){ //bstate.round++; pthread_mutex_lock(&bstate.barrier_mutex ); bstate.nthread++; if (bstate.nthread == nthread) { // 最后一个进...原创 2020-02-29 18:57:21 · 430 阅读 · 0 评论 -
MIT_6.828_2018_Homework:User-level threads
地址:User-level threads之前的swtch()是在内核中进行切换的,这次的切换实在用户态。实现如下:.text/* Switch from current_thread to next_thread. Make next_thread * the current_thread, and set next_thread to 0. * Use eax as a temp...原创 2020-02-27 22:37:15 · 517 阅读 · 0 评论 -
MIT_6.828_Lab4 Part B
此次的实验是实现一个写时复制的fork()。很好的实验,能够加深对fork()的理解。原创 2020-02-23 17:41:06 · 437 阅读 · 0 评论 -
MIT_6.828_Lab4 Part A
项目地址:Lab 4Getting Started在merge的时候发生了冲突,需要手动消除。Multiprocessor Support该内核支持多核,BSP用低物理地址来引导其他的CPU加载系统。利用LAPIC做的三件事情:得知当前代码运行在哪一个CPU上BSP利用IPI中断唤醒其他CPU利用LAPIC的定时器实现分时复用Exercise 1. Implement mm...原创 2020-02-21 20:29:09 · 915 阅读 · 0 评论 -
MIT_6.828_2018_Homework:xv6 locking
作业地址:xv6 locking此次作业让我们对xv6里面应用的锁有更进一步的了解。原创 2020-02-19 11:04:00 · 774 阅读 · 0 评论 -
MIT_6.828_2018_Homework: Threads and Locking
作业地址:Threads and Locking这次作业的目的在于让我们对多线程有个大概的了解,以及多线程可能引发的问题,通常可以通过加锁来解决。源码下载地址:ph.c源码如下:#include <stdlib.h>#include <unistd.h>#include <stdio.h>#include <assert.h>#inc...原创 2020-02-16 21:57:38 · 947 阅读 · 0 评论 -
MIT_6.828_2018_Homework_xv6_CPU_alarm
作业地址:xv6 CPU alarm此次作业就是添加一个系统调用alarm(),可以周期性的进行某个函数的调用。Step 1在user.h中添加这个系统函数的声明:int alarm(int ticks,void(*handler)());Step 2在syscall.h中添加该调用的号码:#define SYS_alarm 22Step 3在usys.S里面添加进入内核的...原创 2020-02-16 12:09:28 · 569 阅读 · 1 评论 -
MIT_6.828_Lab_3: User Environments Part B
项目地址:Lab 3Handling Page FaultsExercise 5. Modify trap_dispatch() to dispatch page fault exceptions to page_fault_handler(). You should now be able to get make grade to succeed on the faultread, faul...原创 2020-02-14 23:05:53 · 309 阅读 · 0 评论 -
MIT_6.828_Lab_3: User Environments Part A
项目地址:Lab 3Environment State在文件inc/env.h文件中,定义了环境(进程)结构体:struct Env { struct Trapframe env_tf; // Saved registers struct Env *env_link; // Next free Env envid_t env_id; // Unique environment i...原创 2020-02-13 16:12:12 · 1287 阅读 · 0 评论 -
MIT_6.828_2018_xv6_lazy_page_allocation
MIT关于虚拟内存映射的课后习题解答原创 2020-02-08 11:04:27 · 724 阅读 · 0 评论 -
MIT_6.828_2018_Homework_xv6_system_calls
作业地址:System calls用户程序调用系统函数的流程1.创建一个新的进程创建一个新的进程的时候,在内核态,会对该进程进行相应的初始化工作:设置该进程的内核栈(PGSIZE),用户的空间(起初是一个PGSIZE的大小),pid,trapret,设置该进程的虚拟地址映射(这就做到了隔离)。2.执行进程接下来切换到用户态(trapfram里面的eip即为在用户态下执行第一条语句的地址)...原创 2020-02-06 11:21:50 · 1206 阅读 · 0 评论 -
MIT_6.828_Lab2 Part3
MIT 6.828 Lab2 Part3的解答原创 2020-02-03 15:44:55 · 349 阅读 · 0 评论 -
MIT_6.828_Lab2 Part2
实验地址:Lab2虚拟地址翻译为物理地址的流程如下: Selector +--------------+ +-----------+ ---------->| | | | | Segmentation | | ...原创 2020-02-02 19:43:56 · 505 阅读 · 0 评论 -
MIT_6.828_Lab2 Part1
实验地址:Lab2Lab2的第一部分为物理地址的管理,其中包括物理内存的初始化,分配以及释放。首先,在inc/mmu.h中定义了几个宏:#define NPDENTRIES 1024 // page directory entries per page directory#define NPTENTRIES 1024 // page table entries per page tab...原创 2020-01-31 23:25:04 · 427 阅读 · 0 评论 -
MIT_6.828_2018_Homework_shell
shell源码地址:sh.c执行简单命令找到sh.c中case ' '处,在此书写执行普通命令的代码。注意到:struct execcmd { int type; // ' ' char *argv[MAXARGS]; // arguments to the command to be exec-ed};和函数 int execv(const c...原创 2020-01-30 16:21:48 · 554 阅读 · 0 评论 -
一个C语言指针的练习题及其解释
练习题地址:原文指针代码如下:#include <stdio.h>#include <stdlib.h>voidf(void){ int a[4]; int *b = malloc(16); int *c; int i; printf("1: a = %p, b = %p, c = %p\n", a, b, c);...原创 2020-01-30 11:31:12 · 551 阅读 · 0 评论 -
Homework: boot xv6(MIT6.828 LEC2作业)
地址:Homework: boot xv6环境部署复制项目到本地在目录6.828下面使用命令:git clone git://github.com/mit-pdos/xv6-public.git将项目复制到本地。之后使用make即可。使用gdb调试打开两个终端,都进入6.828/xv6-public目录下。第一个终端使用命令make qemu-gdb,第二个使用命令gdb[1]。...原创 2020-01-29 18:01:41 · 568 阅读 · 1 评论 -
MIT 6.828 2018 Lab_1
教学大纲:教学日历实验地址:Lab1本次实验共分为以下三个部分:PC BootstrapThe Boot LoaderThe Kernel1.PC Bootstrap32位PC物理地址空间+------------------+ <- 0xFFFFFFFF (4GB)| 32-bit || memory mapped || de...原创 2020-01-28 22:44:31 · 740 阅读 · 0 评论 -
Intel x86 I/O端口总结
原文地址:I/O端口说明:x86是I/O独立编址的,所以端口号从0x0开始。原创 2020-01-27 09:33:06 · 5868 阅读 · 0 评论