lab3:系统调用】的更多相关文章

jos系统调用函数链 记录自己对jos系统调用实现的理解. 用户程序访问系统服务的方法 用户使用系统服务的方式大概分为如下几种: (1)用户程序---->库函数----->系统调用----->内核 用户调用库函数,库函数中完成对实际系统调用的封装,并完成例如检测用户参数的工作,最终通过int指令进入内核 (2)用户程序---->系统调用----->内核 在用户程序中直接通过int 指令,进入内核. (1).(2)本质上是同一种,最终都是执行int指令进入内核.实际开发中,推荐…
[感受] 这次操作系统实验感觉还是比较难的,除了因为助教老师笔误引发的2个错误外,还有一些关键性的理解的地方感觉还没有很到位,这些天一直在不断地消化.理解Lab3里的内容,到现在感觉比Lab2里面所蕴含的内容丰富很多,也算是有所收获,和大家分享一下我个人的一些看法与思路,如果有错误的话请指正. [关键函数理解] 首先第一部分我觉得比较关键的是对于一些非常关键的函数的理解与把握,这些函数是我们本次实验的精华所在,虽然好几个实验都不需要我们自己实现,但是这些函数真的是非常厉害!有多厉害,呆会就知道了…
1 重新搭建实验环境 前面都是用实验楼环境做的实验,偷的懒总是要还的,这一次重装环境前后花了十几个小时,踩了无数的坑. 1.1 Ubuntu和LINUX内核的区别 Ubuntu是基于LINUX内核编写的一个操作系统.LINUX内核定义了一些基本的系统功能,Ubuntu在内核之上加入了图形界面,包管理等功能,优化了人机交互.本次实验,要求使用LINUX内核5.0以上,所以,在下载安装完Ubuntu系统后,需要对内核进行更新. $ uname -a 上面这个指令会显示Ubuntu当前的内核版本,我们…
BUAA_OS lab3 难点梳理 实验难点 进程创建 对于初始化部分,首先需要在pmap.c中修改mips_vm_init()函数,为envs开空间,并map到UENVS空间. 其次,模仿page_init()的做法,将空闲进程控制块串成env_free_list. 至此没有什么理解上的难度. 进程部分的难点,主要在于进程创建流程的理解.进程创建的流程为: 从env_free_list中获取一个空的PCB 初始化进程控制块 为进程分配资源 从空闲链表中移出,开始执行 STEP1&2 env_a…
Lab3 这个实验分成了两个大部分. 1. PartA User Environments and Exception Handling kernel使用Env这个数据结构来trace每一个user enviroment,你需要设计JOS来支持多environments. kernel维护三个主要的全局变量来完成上面的内容 struct Env *envs = NULL; // All environments struct Env *curenv = NULL; // The current…
本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第三篇:用户进程与异常处理.所有章节的笔记可在此处查看:chcore | 康宇PL's Blog 实现用户进程 进程结构 ChCore 中每个进程都对应一个 process 结构体.slot_table 是一个进程占有的内核对象数组和元信息组成的结构体.thread_list 是连接该进程所有线程的链表.如何通过 list_head 的得到对应的对象我们在 Lab 2 里已经学习过…
这一篇博客讲解进程和系统调用相关的知识 有这样一个场景,我需要输入一串文字,然后把我输入的文字加上一个本地的时间戳 保存在一个文件中,可以初步理解为一个备忘录也行 #include <stdio.h> #include <stdlib.h> #include <time.h> /** * 获取一个当前时间 */ char *now() { time_t t; time(&t); return asctime(localtime(&t)); } int m…
上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用. 一.I/O控制方式 I/O就是输入输出,I/O设备指的是输入输出设备和存储设备.I/O控制方式值得就是CPU对内存资源与I/O设备之间输入输出的控制.I/O的控制方式按照发展有下面几种: (1).程序I/O方式. 这个最原始的方式的特点是I/O过程中,CPU全程阻塞.CPU向I/O控制器发送指令,要求读取一个字节,IO控制器取一个字节,存入自身的数据寄存器中,存入完毕后…
Xv6的lecture LEC 1 Operating systems   L1: O/S overview L1:O/S概述   * 6.828 goals 6.828的目标   Understand operating systems in detail by designing and implementing a small O/S 通过设计并实现一个小型的系统在细节上理解操作系统.   Hands-on experience with building systems("Applyin…
文件描述符 进程每打开一个文件的时候,会获得该文件的文件描述符,而后续的读写操作都把文件描述符作为参数.在用户空间或者内核空间,都是通过文件描述符来唯一地索引一个打开的文件.文件描述符使用int类型表示,文件描述符的范围从0开始,到上限值-1,默认情况下,上限值为1024,也就是说,进程默认情况下最多可以打开1024个文件.负数是不合法的文件描述符,当函数调用出错时,返回的文件描述符为-1. 每个进程都至少包含三个文件描述符: 文件描述符 表示 宏 0 标准输入(stdin) STDIN_FIL…