操作系统原理(CSAPP)
EmberWn
初学者
展开
-
不同对象的字节表示
#include <cstdio>#include <iostream>typedef unsigned char * bytePointer;void showByte(bytePointer bP,size_t length){ size_t i=0; for(;i<length;++i) { printf("%.2x ",bP[i]); }原创 2017-10-10 15:00:58 · 286 阅读 · 0 评论 -
一个HelloWorld程序的生成过程
生成过程 源程序(文本文件) ->预处理器(处理头文件)(文本文件) ->编译器(生成汇编语言)(文本文件) ->汇编器(生成机器语言)(可重定位目标文件)(二进制文件) ->链接器(合并不同文件)(可执行目标文件)(二进制文件)原创 2017-10-06 16:22:45 · 447 阅读 · 0 评论 -
编写内存分配器
编写一个简单的分配器需要考虑以下问题: 1、空闲块的组织方式,选用的是隐式空闲链表 2、如何放置一个新分配的块,采用的是首次适配策略 3、如何合并空闲块块的格式:使用边界标记的堆块的格式定义4个字节为一个字,头部和脚部各一个字,内容相同。分别为块的大小和块的分配状态。采用双字对齐,因此最小块大小为16字节。脚部是为了便于合并空闲块而存在。堆的格式序言块和结尾块的存在也是为了便于合并。我们的内存原创 2017-12-08 16:26:11 · 598 阅读 · 1 评论 -
系统级IO
#include<cstddef>// unixIOssize_t read(int fd, void *buf, size_t n); //若成功则为读的字节数,若EOF则为0,若出错则为-1ssize_t write(int fd, const void *buf, size_t n);//Robust IO//不带缓存版本ssize_t rio_readn(int fd, vo原创 2017-12-11 15:49:37 · 186 阅读 · 0 评论 -
搭建web服务器(tiny web)
服务器端 客户端 代码设置的默认路径为桌面,hello.txt文件位于桌面,选择端口的端口号为8000(命令行第二个参数),127.0.0.1代表回送地址,指本地机,需要先行确认可用(本人通过Apache打开)。#include <iostream>#include <unistd.h>#include <cstddef>#include <sys/socket.h>#includ原创 2017-12-17 22:48:24 · 1722 阅读 · 1 评论 -
IO多路复用并发服务器
服务器调用select函数检测两种不同类型的输入事件 1、新的客户端请求到达,此时监听描述符准备好可以读了 2、一个已存在的客户端的已连接描述符准备好可以读了#include <iostream>#include <unistd.h>#include <sys/socket.h>#include <netdb.h>#include <sys/select.h>ssize_t rio_w原创 2017-12-19 11:15:15 · 800 阅读 · 1 评论