摘要: 起因 经常出现内存不够了。程序规模的增长大于存储器容量的增长。理想的存储器:更大,更快,更便宜,非易失性存储。实际的存储器: -不常用的放在硬盘上,常用的放在内存上。 覆盖技术 相互之间没有调用关系放到一个模块,调用时间不同,占用空间的时间不同 由程序员来把一个大的程序划分为若干个小的功能模块,并确 阅读全文
posted @ 2021-08-16 00:31 wsq1219 阅读(45) 评论(0) 推荐(0) 编辑
摘要: ◼ 线程的主要优势在于,能够通过全局变量来共享信息。不过,这种便捷的共享是有代价的:必须确保多个线程不会同时修改同一变量,或者某一线程不会读取正在由其他线程修改的变量。◼ 临界区是指访问某一共享资源的代码片段,并且这段代码的执行应为原子操作,也就是同时访问同一共享资源的其他线程不应终端该片段的执行。 阅读全文
posted @ 2021-08-13 00:35 wsq1219 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 通过段号找到所在物理内存的起始地址,段表里存的是逻辑地址的段号和物理地址的段号之间的映射关系。 段表由操作系统来建立 段表的信息:段的起始地址,长度的限制 段的起始地址+偏移量 来查找在物理地址的位置把相应的数据取出来交给cpu做处理 分页机制 一个程序在运行的时候,这个程序本身的地址(逻辑地址)是 阅读全文
posted @ 2021-08-10 14:48 wsq1219 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 1.终端 ◼ 在 UNIX 系统中,用户通过终端登录系统后得到一个 shell 进程,这个终端成为 shell 进程的控制终端(Controlling Terminal),进程中,控制终端是保存在 PCB 中的信息,而 fork() 会复制 PCB 中的信息,因此由 shell 进程启动的其它进程的 阅读全文
posted @ 2021-08-08 21:10 wsq1219 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 共享内存使用步骤 ◼ 调用 shmget() 创建一个新共享内存段或取得一个既有共享内存段的标识符(即由其他进程创建的共享内存段)。这个调用将返回后续调用中需要用到的共享内存标识符。◼ 使用 shmat() 来附上共享内存段,即使该段成为调用进程的虚拟内存的一部分。◼ 此刻在程序中可以像对待其他可用 阅读全文
posted @ 2021-08-08 00:01 wsq1219 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 反汇编 找到readsec函数的入口地址 通过查看寄存器可以看到 当汇编代码定义了函数,那么就需要定义栈空间 突破512字节限制(2) 如何在根目录区查找目标文件? A.内存比较1.指定源起始地址(DS:SI)2.指定目标起始地址(ES:DI)3.判断在期望长度(CX)内每一个字节是否都相等 汇编中 阅读全文
posted @ 2021-08-06 17:43 wsq1219 阅读(69) 评论(0) 推荐(0) 编辑
摘要: ◼ 信号是 Linux 进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。  对于前台进程,用户可以通过输入特殊的终端字 阅读全文
posted @ 2021-08-04 11:42 wsq1219 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2021-08-02 15:49 wsq1219 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 主引导程序中如何进行字符串打印? 汇编中的常量定义 Const equ 0x7c00 == c语言 #define Const 0x7c00 主引导程序 org 0x7c00 ; IP = 0x7c00 jmp short start ;占用两字节 nop ;占用一字节 define: ;自己定义栈 阅读全文
posted @ 2021-07-30 01:34 wsq1219 阅读(85) 评论(0) 推荐(0) 编辑
摘要: org 0x7c00 //入口 start: mov ax, cs mov ss, ax mov ds, ax mov es, ax mov si, msg //将msg的地址放到si寄存器里 print: mov al, [si] //[]中括号来取数据 add si, 1 cmp al, 0x0 阅读全文
posted @ 2021-07-09 15:37 wsq1219 阅读(35) 评论(0) 推荐(0) 编辑