《操作系统真像还原》操作系统实现——用户进程
硬件生产厂商(Intel)给多进程切换提供了硬件级的解决方案,也就是使用 TSS(Task-Stat Segment),令人遗憾的是由于其效率较低,现代操作系统大多没有使用它来进行进程切换,但是特别的,在特权级转移时的栈切换仍然需要通过它来进行,所以虽然我们不用它来切换进程,也仍然需要设置好它。
…
《操作系统真像还原》操作系统实现——从键盘获取输入和缓冲区
关于键盘输入我不想写,就是一个和硬件交互的过程,这里主要还是说一下输入输出缓冲区。
代码已经打好 tag,链接,比较重要的就是 ioqueue。
获取键盘输入后,可以直接打出到屏幕上,但是这样除了给用户看看之外没有任何的用处,如果想要让输入有效,就必然需要把输入暂存到一个地方,然后让需要从用户读取的线程读取输入,这就需要一个缓冲区来处理这个问题,Dijkstra 提出了一个生产者-消费者模型,基于该模型的思想可以有效地解决这个问题。
…
pwn 指定程序运行时使用的 libc
文章是一月份的时候写的了,那个时候比较稚嫩,当时并没有很好的解决这个问题,也没有写清楚,现在重写一下。
使用 patchelf 替换
假如我们有靶机的 libc,那么通过 patchelf 就可以将二进制使用的 libc 硬改写成靶机的 libc。
…