Mit6.828/6.S081 fall 2019的Lab1是Unix utilities,主要内容为利用xv6的系统调用实现sleep.pingpong.primes.find和xargs等工具.本文对各程序的实现思路及xv6的系统调用流程进行详细介绍. 前言 在实验之前,推荐阅读一下官网LEC1中提供的资料.其中Introduction是对该课程的的概述,examples则是几个系统编程的样例,这两部分快速浏览一遍即可.对于xv6 book的第一章,则建议稍微细致地阅读一遍,特别是对fork…
目录 1. 简介 2. 安装ubuntu20.04 3. 更换源 3.1 更换/etc/apt/sources.list文件里的源 3.2 备份源列表 3.3 打开sources.list文件修改 3.4 刷新列表 4. 安装SSH 4.1 SecureCRT 报错 4.2 解决方法 4.3 修改ssh_config 4.4 修改sshd_config 4.5 重新启动服务并测试 5. 配置静态IP 6. 安装RISC-V交叉编译工具 7. 安装QEMU 8 测试 8. 1 下载xv6源码 8.…
Lab 5: File system, Spawn and Shell 1. File system preliminaries 在lab中我们要使用的文件系统比大多数"真实"文件系统更简单,包括XV6 UNIX的文件系统,但它足以提供基本功能:创建,读取,写入和删除在分层目录结构中组织的文件. 我们仅开发一个单用户操作系统, 因此,我们的文件系统不支持文件所有权或权限. 我们的文件系统目前也不支持硬链接,符号链接,时间戳或大多数UNIX文件系统的特殊设备文件. 1. On-Disk…
1. exit方法: public static void exit(int status): 终止当前正在运行的Java虚拟机.参数用作状态码:根据惯例,非0的状态码表示异常终止. 调用System.exit(n)实际等效于调用:Runtime.getRuntime().exit(n) 2. currentTimeMillis方法: public static long currentTimeMillis() 返回以毫秒为单位的当前时间. (1)currentTimeMillis方法的特殊用途…
X86_64 的 Redhat / Centos / Scientific 下面,若要编译.运行32位程序,需要安装以下包: yum install libgcc.i686 yum install glibc-static.i686 yum install glibc-devel.i686 #include <sys/ptrace.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h&…
最近在看APUE第10章中关于system函数的POSIX.1的实现.关于POSIX.1要求system函数忽略SIGINT和SIGQUIT,并且阻塞信号SIGCHLD的论述,理解得不是很透彻,本文就通过实际的实例来一探究竟吧. 一.为什么要阻塞SIGCHLD信号 #include <stdlib.h> int system(const char *command); 函数工作大致流程:system()函数先fork一个子进程,在这个子进程中调用/bin/sh -c来执行command指定的命…
#!/bin/bash # auto make System.map to C header file # 说明: # 该脚本主要是将Linux内核生成的System.map文件中的符号.地址存入结构体中, # 目前认为也许可以在内核驱动中直接调用对应的函数.以前在学习裸板开发中就有 # 使用Uboot中提供的printf来写程序的先例,那么这里应该也是可以的,不过这里没 # 有什么实用性,因为5W个函数,但这个结构体就要用掉进200kByte空间. # # -- 深圳 南山平山村 曾剑锋 ];…
Information Management System 一.代码部分 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> typedef struct STU { char name[20]; char sex[5]; char num[20]; char _class[20]; char score[5]; }; void home(void)…
import java.util.Scanner; public class TryScanner { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try{ System.out.println("input int:"); Scanner scanner=new Scanner(System.in); int i=scanner.nex…
一. 前言部分 从享受生活的角度上来说:“程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员,你就没有什么工作可做,或者说是即使有可以做的工作但是你非常不愿意去做:第二,你非常痴迷和爱好程序,并且在这方面有一些天赋和优势.程序员的结局也是有两种:第一,默默退休,第二以程序员为起点或跳板,注意积累,跟对了好的老板或团队,找到和很好的搭档自己创业,成为IT金领和富翁.” 人们在时间面前是平等的,吾生也有涯,所以,你的经验更丰富点,那不算什么,经验是用时间积累的,你一生只有那么多…