csapp
文章平均质量分 87
《深入理解计算机系统》读书笔记
不搞数学的汤老师
不是各位卷死在下,就是在下卷死各位!
展开
-
信息的表示和处理——整型表示及其运算
整数类型是我们日常使用中最经常使用基本类型之一。在计算机中整数是如何表示的?无符号数和有符号数对于计算机来说是什么样的?原码、补码、反码又是什么?整型类型之间又该是如何转换的?整型又有什么坑?整型加减运算如是怎么样的?原创 2021-12-02 00:35:54 · 564 阅读 · 0 评论 -
信息的表示和处理——信息存储
计算机中的数据是如何存储的?二进制、八进制、十六进制又是如何转换的?大小端序是什么,以及有什么影响?字符串在计算机中又如何表示?位运算是什么,又能做什么?逻辑运算又什么潜台词?如果以上的问题,你不能得出准确的答案,那么本文非常适合你。原创 2021-12-01 22:13:40 · 480 阅读 · 0 评论 -
Linux 进程:基础
Linux 进程:基础进程标识pid_t 唯一标识一个进程。#include <unistd.h>pid_t getpid(); // 当前进程号pid_t getppid(); // 父进程号pid_t 是一个 int,Linux 内核限制进程号要最大是 32767。当超过该值后会到 300 重新开始计数。pid 为 300 以下的编号长期被 Linux 系统进程和守护进程占用,为了避免查询 PID 是否被分配的开销,所以干脆直接从 300 开始分配。可以改变 /proc原创 2021-06-16 00:29:37 · 656 阅读 · 0 评论 -
Linux IO 基础:文件 IO
文件 IO通用 IO 模型在 UNIX 系统中,万物皆文件。除普通文件外,如:soket、pipe、目录都是文件。UNIX IO 最重要的特性就是 IO 通用性,不管是什么文件,都能同一套系统调用(open、read、write、close)执行 IO 操作。每个文件按照使用类别分个人、组、其他,按照使用行为分可读、可写、可执行。所以一共可以组合为 9 种使用权限。由 shell 启动的进程会默认打开三个文件描述符:0 标准输入,对应 stdin1 标准输出,对应 stdout2 标准错误原创 2021-06-15 15:03:26 · 289 阅读 · 1 评论 -
详解 Linux 信号机制
信号是事件发生时对进程的通知机制,有时也称之为软件中断。一个进程(具有权限)能够向另一个进程发送信号。进程也可向自己发送信号。可以作为一种同步技术,甚至可作为 IPC (进程间通信)。信号到达默认执行以下操作之一:忽略信号杀死进程产生核心转储文件,并杀死进程暂停进程唤醒进程除了默认操作以外,也能改变信号的响应行为。称之为信号的处置设置。程序可以对信号做以下的设置:默认操作忽略信号执行信号处理程序信号处理程序是由程序员编写的函数,根据收到的信号执行对应的任务。无法对信号原创 2021-06-12 03:04:45 · 2089 阅读 · 0 评论 -
Linux 库打桩机制
库打桩机制Linux 链接器截获对共享库函数调用,转而执行自己的代码。创建一个包装函数,对库函数进行包装(代理模式)。利用打桩机制欺骗系统去调用包装函数。编译时打桩// malloc.c // 对 malloc、free 的包装函数#ifdef COMPILETIME#include <stdio.h>#include <malloc.h>void *my_malloc(size_t size) { void *ptr = malloc(size);原创 2021-06-11 19:58:50 · 554 阅读 · 2 评论 -
汇编级程序性能优化
从汇编级优化程序性能有些人会说,明明编译器就会有优化(gcc -Og -O1 -O2 -O3),为何还需要人为刻意优化?因为编译器很蠢,他只有在确定优化后的代码与优化前的代码的行为完全一致,才会进行优化。并不会猜测程序员的编写这段代码的意图。原创 2021-06-06 19:18:23 · 3008 阅读 · 0 评论