
os
文章平均质量分 91
Linkkk丶
这个作者很懒,什么都没留下…
展开
-
链接(Linking)
在编译期,编译器向汇编器导入每个全局符号,汇编器显式地将符号信息编码到可重定位对象文件地符号表中。函数和初始化的全局变量获得强符号。未初始化的全局变量获得弱符号。例如图 7.1 中的程序,buf,bufp0,main 和 swap 是强符号,bufp1 是弱符号。多个相同的强符号是不允许的。一个强符号,多个弱符号,选择强符号。多个弱符号,选择任一弱符号。4 return 0;12 }翻译 2023-06-13 14:07:06 · 821 阅读 · 0 评论 -
过程调用(Procedures)
此外,Q 使用栈帧存储任何它所调用的过程所传入的参数。如上图所示,在被调用过程中,第一个参数位于相对 %ebp 8 的偏移处,剩余的参数 (假设它们的数据类型不需要超过 4 字节大小的空间) 存储于连续的 4 字节块,即参数 i 位于相对 %ebp 4 + 4i 的偏移处。栈帧的边界分别是两个指针,依据栈增长的方向,下边界为帧指针,上边界为栈指针。传入 Q 的参数被存储在 P 的栈帧中,除此之外,当 P 调用 Q 时,P 的返回地址 (指令的作用是将返回地址推入栈中,并跳到被调用过程的起始点。翻译 2023-06-02 15:54:57 · 1379 阅读 · 0 评论 -
数据对齐(Data Alignment)
Linux 的对齐政策遵循 2 字节数据类型 (e.g.,short) 的地址必须是 2 的倍数,更大的数据类型 (e.g.,int*,float,和 double) 的地址必须是 4 的倍数。使用 9 字节的分配,不可能满足 d 中每个元素的对齐要求,因为这些元素的地址将为 Xd,Xd + 9,Xd + 18,Xd + 27。如果我们以 9 字节打包该结构体,对于字段 i,和 j 依然能满足对齐要求,只要结构体的起始地址能满足 4 字节对齐的要求。因为字段 i 的偏移是 0,该字段的地址就是 r 的值。翻译 2023-05-26 16:02:57 · 637 阅读 · 0 评论 -
Chapter 6. An Overview of Operating System Concurrency Mechanisms
网络应用,特别是服务器,总是经常并行地处理请求以满足服务质量的需求。第 5 章描述了并行选项相关的一般设计权衡点。本章展示用于实现这些设计的同步事件解多路复用器,多进程,多线程,和同步机制的概览。我们也讨论了一些使用原生 C-level 并发 API 时带来的兼容性和编程问题。翻译 2023-04-19 10:53:09 · 105 阅读 · 0 评论 -
操作系统简述
操作系统是计算机最基本的,它运行于,能完全访问所有硬件,执行任何机器能执行的指令。剩下的软件运行于,用户模式只提供机器指令的子集。影响机器的控制或执行 I/O (输入/输出) 操作的指令禁止用户模式的程序使用。用户接口程序,shell 或 GUI,是最底层的用户模式软件,它们允许用户启动其他程序,例如网页浏览器,音乐播放器等。用户接口程序也被操作系统频繁使用。操作系统的位置如图 1-1 所示。它运行于裸硬件之上,为所有的其他软件提供基础。操作系统是以内核模式运行地软件,它执行两个功能:1. 为应用程序员翻译 2023-03-08 17:25:34 · 827 阅读 · 0 评论 -
Preemption
是一种临时中断执行任务的一种行为,并打算在随后的某个时间点恢复任务的执行。这一中断由内部的调度器完成,不需要来自任务的协助或合作。这种抢占式调度器在最特权的 protecting ring 中运行,意味着中断和恢复被认为是具有极高安全性的操作。在处理器中执行的当前任务的这种改变被称为上下文切换。翻译 2023-02-15 00:57:45 · 239 阅读 · 0 评论 -
Execution
计算机或软件工程中的是计算机或虚拟机读取并执行计算机程序的指令的过程。程序的每一个指令都是为了解决某个特定问题必须执行的特定行为的描述。执行每条指令时对指令进行。随着执行机器执行指令,依据这些指令的语义产生特殊的效果。计算机中的程序可能执行于批处理程序,或者用户在解释器的交互式会话中输入命令。这种情况下,“commands” 是简单的程序指令,它们被链接在一起执行。翻译 2023-02-14 22:34:28 · 280 阅读 · 0 评论 -
Virtual Memory
操作系统中的软件可能拓展这些功能,利用,例如 disk storage 提供虚拟内存空间来超出真实内存的容量,因此引用较计算机物理提供的更多的内存。整个系统只能有一张页表,或每个应用和 segment 都有单独的页表,或大 segments 的页表树,或这些方式的结合。这一不同点有一个重要的结论;虚拟内存的主要好处包括将应用从管理共享内存空间中解放出来,在进程中共享库使用的内存的能力,隔离内存增加安全性,理论上能使用比物理提供的更多的内存,使用 paging 或 segmentation 的技术。翻译 2023-01-13 17:41:46 · 417 阅读 · 0 评论 -
进程间通信
进程间通信1. 介绍在第8章,介绍了进程控制原语以及如何使用多进程工作。但是这些进程仅仅通过使用fork和exec来传递打开的文件,或者通过文件系统传递打开的文件,来进行交换信息。fork产生的子进程拷贝父进程文件描述符。现在将介绍其他的进程间通信技术–进程间通信(IPC)。下图介绍了4种进程间通信的不同方式,本文接下来将介绍它们的实现:半双工管道和FIFO;全双工管道和命名全双工管道。XSI消息队列、XSI信号量、XSI共享存储。消息队列(实时),信号量,共享内存(实时)。套接字和翻译 2021-05-24 20:14:56 · 179 阅读 · 0 评论