AH's Blog

小菜鸟的碎碎念

How to Categorize Data

数据科学基础课笔记(一)

数据的层次 数据的层次 描述 支持的数学运算 例子 Qualitative Nominal Level 名词形式的数据 集合操作(交集、并集) 动物的名称 Ordinal Level 能够进行排序的数据 集合操作 比较 成绩 ...

进程同步

Operating System Notes

第6章 进程同步 6.1 背景 进程能并发执行 并发时数据共享可能导致数据不一致 需要机制来保证协作进程的有序执行,从而保证数据一致 例子:生产者-消费者问题中的计数器counter 竞争条件:两个进程同时试图修改一个共享内存的内容,最后的结果依赖于两个进程的执行顺序和时机 6.2 临界区问题 考虑一个具有$n$个...

CPU调度

Operating System Notes

第5章 CPU调度 5.1 基本概念 5.1.1 CPU-I/O区间周期 CPU burst -> I/O burst -> CPU burst -> I/O burst -> … 5.1.2 CPU调度程序(CPU Scheduler) 进程在就绪队列(有多种队列)中等待执行,短期调度程序或CPU调度程序选一个能运行的进程分配CPU CP...

线程

Operating System Notes

第4章 线程 4.1 概述 一个线程包括:线程ID、PC、Reg组、栈 并与其他线程共享代码、数据和文件 如果进程有多个线程,则可以同时做多个任务 4.1.1 动机 一个应用程序可能需要执行多个相似任务 创建进程很耗费时间和资源 线程可以简化代码,提高效率 内核普遍是多线程的 4.1.2 优点 多线程编程的4个优点: 响应度高:部分阻塞程序仍然能...

主存

Operating System Notes

第9章 主存 9.1 背景 9.1.1 基本硬件 程序必须送入内存并放在一个将要运行它的进程中 CPU能直接访问的存储空间只有主存和寄存器 内存单位(memory unit)只能看到一条这样的流: 地址+读请求 或 地址+数据和写请求 访问寄存器在一个CPU周期(或更少)完成 ...

I/O

Operating System Notes

第12章 I/O 12.1 概述 I/O管理是OS设计和操作的主要组成部分 计算机操作的重要方面 I/O设备之间很不一样 控制它们的方法多种多样 性能管理 I/O设备的基本要素如端口、总线及设备控制器适用于许多不同的I/O设备 设备驱动器封装了设备的具体信息 为I/O子系统提供了...

大容量存储系统

Operating System Notes

第11章 大容量存储系统 11.1 概述 现代计算机的辅助存储块是硬盘驱动器(HDDs)和非易失性存储器(NVM)设备 HDDs在移动读写头下旋转带磁性涂层的盘 驱动器每秒旋转60-250次 transfer rate(传输速率)是数据在驱动器和计算机之间流动的速率 positioning time/random-access ti...

虚拟内存

Operating System Notes

第10章 虚拟内存 10.1 背景 代码要在内存里才能执行,但整个程序的使用频率很低 例如处理异常错误条件的代码、大型数据结构(如数组、链表和表)、程序不常用的某些选项/功能 不需要同时使用整个程序代码 考虑运行部分装载程序的可能性 程序就不需要再受物理内存的限制 每个程序在运行的时候使...

同步实例

Operating System Notes

第7章 同步实例 7.1 同步的经典问题 7.1.1 有限缓冲问题(the Bounded-Buffer Problem) n个缓冲,每个可以放一项 信号量mutex初始化为1,信号量full初始化为0,信号量empty初始化为n 生产者进程: // Producer while(true) { ... /* produce an item in next_produced ...

死锁

Operating System Notes

第8章 死锁 8.1 系统模型 系统拥有一定数量的资源,类型为$R_1$, $R_2$, …, $R_m$ ​ e.g. CPU周期、内存空间、I/O设备 每种资源类型$R_i$有$W_i$个实例 每个进程应用资源的顺序如下: 申请(request) 使用(use) 释放(release) 其中申请和释放是系统调用 8.2 多线程应用中的死锁 一个Pthre...