随笔分类 - 操作系统
摘要:sleep Implement the UNIX program sleep for xv6; your sleep should pause for a user-specified number of ticks. A tick is a notion of time defined by th
阅读全文
摘要:窗口1作为xv6的运行窗口。 make CPUS=1 qemu-gdb 窗口2作为gdb调试窗口。 gdb-multiarch kernel/kernel # 进入gdb后执行 set confirm off set architecture riscv:rv64 set riscv use-com
阅读全文
摘要:0. 概述 linux0.11对内存的管理是段页式的,所以其地址映射过程是将逻辑地址先通过分段机制变换得到线性地址,然后再通过分页机制变换为实际的物理地址。 1. 分段 linux除了启动时运行在实模式下,其他时间运行在保护模式下。 保护模式下寻址和实模式有所不同: 实模式即DS:SI的形式去寻址。
阅读全文
摘要:所需数据结构(定义在头文件中,用户也需要知道): #define SEM_FAILED (void*) 0 #define SEM_NAME_MAX_LEN 16 #define SEM_QUEUE_LEN 16 struct semaphore_queue { int front; int rea
阅读全文
摘要:查看本机的网关(重要,涉及到连接互联网问题) route -n 查看本机IP信息 ifconfig 修改配置文件 sudo vim /etc/netplan/01-network-manager-all.yaml 按照上文查询到的信息进行修改: # Let NetworkManager manage
阅读全文
摘要:Ubuntu18.04 ssh免密码登陆: 客户端(发起ssh端)配置好ssh公私钥。 # 连按三个回车即可,生成的key在~/.ssh下 ssh-keygen -t rsa -C "your mail" 服务器端(ssh服务器端)启动ssh。 # 未安装ssh server则先安装之 sudo a
阅读全文
摘要:set -e: 表示此命令后,当某命令返回值非0时,将出错。如果是非交互环境,将直接退出,不再执行后续命令 set +e: set -e的反向操作,恢复bash shell的默认行为,命令失败后继续执行后续命令 set -u: (set -o nounset), 表示此命令之后,当某命令使用了未定义
阅读全文
摘要:0 引言 进程是操作系统分配资源的最小单位;线程是程序执行的最小单位。计算机上运行着几十上百个程序,对于每个程序而言,他们都是独享CPU的,操作系统制造了这一有多个CPU的假象。这一假象得以维持的基础就在于进程之间的切换,而进程切换则需要用到进程调度,具体的进程调度内容可以看之前的博文:操作系统-进
阅读全文
摘要:实验内容 进程从创建(Linux下调用fork())到结束的整个过程就是进程的生命期,进程在其生命期中的运行轨迹实际上就表现为进程状态的多次切换,如进程创建以后会成为就绪态;当该进程被调度以后会切换到运行态;在运行的过程中如果启动了一个文件读写操作,操作系统会将该进程切换到阻塞态(等待态)从而让出C
阅读全文
摘要:实验目的 建立对系统调用接口的深入认识 掌握系统调用的基本过程 能完成系统调用的全面控制 为后续实验做准备 实验内容 此次实验的基本内容是:在Linux 0.11上添加两个系统调用,并编写两个简单的应用程序测试它们。 iam() 第一个系统调用是iam(),其原型为: int iam(const c
阅读全文
摘要:实验目的 熟悉hit-oslab实验环境; 建立对操作系统引导过程的深入认识; 掌握操作系统的基本开发过程; 能对操作系统代码进行简单的控制,揭开操作系统的神秘面纱。 实验内容 此次实验的基本内容是: 阅读《Linux内核完全注释》的第6章,对计算机和Linux 0.11的引导过程进行初步的了解;
阅读全文
摘要:概述 进程的基本操作接口: 进程创建:fork (spawn, vfork, clone) 进程执行:exec 进程间同步:wait 进程退出:exit/abort 进程创建:fork() fork()语义:为调用进程创建一个一模一样的新进程,fork后的两个进程均为独立进程(调用进程为父进程,新进
阅读全文
摘要:概述 线程(thread),又被称为轻量级进程(Lightweight Process, LWP)是程序执行流的最小单位,也是调度的基本单位。 为什么需要线程? 创建进程的开销较大:包括了数据、代码、堆、栈等 进程的隔离性过强:进程间交互可以通过进程间通信(IPC),但开销较大 进程内部无法支持并行
阅读全文
摘要:概述 比例份额(proportional-share)调度程序(又称公平份额(fair-share)调度程序)。比例份额算法基于一个简单的想法:调度程序的最终目标,是确保每个工作获得一定比例的CPU时间,而不是优化周转时间和响应时间。 彩票调度(lottery scheduling)是比例份额调度程
阅读全文
摘要:概述 1962年,Corbato首次提出多级反馈队列,应用于兼容时分共享系统(CTSS)。Corbato因在CTSS中的贡献和后来在Multics中的贡献,获得了ACM颁发的图灵奖(Turing Award)。该调度程序经过多年的一系列优化,出现在许多现代操作系统中。 多级反馈队列需要解决两方面的问
阅读全文
摘要:/bin - 基本命令二进制文件 /sbin - 基本的系统二进制文件,通常是root运行的 /dev - 设备文件,通常是硬件设备接口文件 /etc - 主机特定的系统配置文件 /home - 系统用户的主目录 /lib - 系统软件通用库 /opt - 可选的应用软件 /sys - 包含系统的信
阅读全文
摘要:系统调用概述 系统调用:运行在用户空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供用户程序与操作系统之间的接口。 系统调用需要了解的点: 系统调用将处理器从用户态切换到核心态,以便 CPU 访问受到保护的内核内存。 每个系统调用都由一个唯一的数字来标识。 系统调用可以有一套参数,用于
阅读全文
摘要:操作系统设计原则 操作系统的重要设计原则:策略与机制的分离 策略(Policy):要做什么 —— 相对动态 机制(Mechanism):怎么做 —— 相对静态 操作系统可仅通过调整策略来适应不同应用的需求 例子 策略 机制 登录 什么用户、以什么权限登录 输入处理、策略文件管理、桌面启动加载 调度
阅读全文
摘要:什么是操作系统 操作系统是在硬件和应用之间的软件层 "操作系统是管理硬件资源、控制程序运行、改善人机界面 和为应用软件提供支持的一种系统软件。" [计算机百科全书(第2版)] 操作系统 = 管理 + 服务 操作系统为应用提供的一些服务: 为应用提供计算资源的抽象 CPU:进程/线程,数量不受物理CP
阅读全文
摘要:进程调度概述 定义 进程存在的核心目的:虚拟化CPU,从而支持多个进程在少量的物理CPU上运行(每个进程以为它独享一个CPU)。 进程调度就是选择一个可用的进程(可能从多个可用进程集合中选择)到CPU上执行。单处理器系统从来不会有超过一个进程在运行。如果有多个进程,那么余下的则需要等待CPU空闲并重
阅读全文