CS144-lab0 1.简介获取实验指导书:Lab Checkpoint 0: networking warmup个人CS144实验地址:github 2.telnet手动访问网页Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在t 2023-09-08 计算机网络 > CS144 #计算机网络 #CS144
Tinyhttpd 项目介绍这是一个简单的轻量HTTP服务器,能够让我们理解服务器工作的流程与本质。我的GitHub地址。对代码我做了一点更改,例如再服务器进程中打印一些报文的内容以及做了比较详细的注释,还有更改了simpleclient.c文件使得这个程序也可以与http进行非GET非POST的通信。 程序运行编译好项目后,首先运行http程序,http.c文件中位服务器指定了一个端口,然后可以打开浏览器,输入lo 2023-09-08 项目 > 网络编程 #项目 #网络编程
初始socket 1.什么是socketsocket 的原意是“插座”,是一种操作系统提供的进程间通信机制。 在UNIX/Linux系统中,一切皆文件,网络连接也是一个文件,它也有文件描述符。我们可以通过 socket() 函数来创建一个网络连接,或者说打开一个网络文件,socket() 的返回值就是文件描述符。有了文件描述符,我们就可以使用普通的文件操作函数来传输数据了,例如: 用 read() 读取 2023-08-18 计算机网络 > 网络编程 #计算机网络 #网络编程
线程池的C语言实现 1.任务队列线程池结构体就是存储任务队列的。很明显,任务中需要有执行函数的函数地址和传入的参数。 12345typedef struct Task{ void (*function)(void *arg); void *arg;} Task; 在这里,我们的function函数只接受单个参数。 如果需要多个参数呢?我在github上给出了一小段实现代码。这是我的g 2023-08-05 项目 > 线程池 #项目 #线程池
线程池概述 1.线程池的原理为什么需要线程池 并发的线程数目较多,假如每一个线程都只是执行一个时间很短的任务就结束了,那么这样频繁的创建线程就会大大降低系统的效率,因为频繁创建和销毁线程都需要时间。 线程池就是使得线程可以复用,一个线程执行完一个任务后并不销毁。线程池里的线程都是后台线程。如果某个线程在托管代码中空闲,那么线程池将插入另一个辅助线程来使所有处理器繁忙。如果线程池中的所有线程都繁忙,但队列中 2023-08-05 项目 > 线程池 #项目 #线程池
硬件视角的操作系统 本讲内容:计算机硬件的状态机模型;回答以下问题: 什么是计算机硬件? 计算机硬件和程序员之间是如何约定的? 听说操作系统也是程序。那到底是鸡生蛋还是蛋生鸡? 硬件与程序员的约定Bare-metal 与程序员的约定 Bare-metal 是指在没有操作系统或者其他软件支持的情况下直接运行硬件的情况。 Bare-metal 与厂商的约定 CPU Reset 后的状态 (寄存器值) 2023-08-02 操作系统 > jyy操作系统 #jyy操作系统 #操作系统
系统调用和UNIX Shell 本讲内容 Shell xv6 shell 代码讲解 什么是 shell os = API + 对象 人不可能直接使用系统调用来使用操作系统,所以人和操作系统之间隔了一个应用程序,这个应用程序就叫 shell。shell 把内核的 API 和对象做一层封装,来帮助用户管理操作系统对象的一个应用程序 。有 graphic shell 和 command line shell。 she 2023-08-02 操作系统 > jyy操作系统 #jyy操作系统 #操作系统
输入输出设备模型 IO设备(CPU视角):一个能与CPU交换数据的接口/控制器 就是“几组约定好功能的线”,通过握手信号从线上读出/写入数据 每一组线都有自己的地址 CPU可以直接使用指令(in/out/MMIO)和设备交换数据CPU不管设备具体是如何实现的 总线、中断控制器和DMA越来越多的IO设备,如何给未来留出一点空间? CPU只直接连接一个设备,这个IO设备实 2023-08-02 操作系统 > jyy操作系统 #jyy操作系统 #操作系统
设备驱动程序 本次课的主要内容 什么是设备驱动程序 Linux设备抽象 设备驱动程序原理 设备其实是一组寄存器和一组协议,一个设备,一个协议 设备可以分为两种 字符设备:字节流,例如键盘 块设备:字节数组,例如磁盘 操作系统:设备=支持各类操作的对象(文件) read: 从设备某个指定的位置读出数据 write:向设备某个位置写入数据 ioctl: 读取/设置设备的状态, ioctl 2023-08-02 操作系统 > jyy操作系统 #jyy操作系统 #操作系统
内核线程与进程、进程API 什么是操作系统虚拟化:操作系统同时保存多个状态机C程序 = 状态机 初始状态: main(argc, argv) 状态迁移: 指令的执行,包括syscall 实际上,在 UNIX/Linux 系统内核完成初始化后,只有一个 init 进程被启动,从此以后,操作系统内核就化身为了一个事件驱动的程序、状态机的管理者,仅在中断和系统调用发生时开始执行。 下面看一段小代码 1234 2023-08-02 操作系统 > jyy操作系统 #jyy操作系统 #操作系统