上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页

2017年10月30日

内存管理——进程创建,执行,缺页,终止

摘要: 与分页相关的工作。 1、进程创建时:当进程被创建时,操作系统需要确定程序和数据在初始时有多大,并针对其大小为进程创建页表,操作系统需要在内存中为页表分配空间并进行初始化。此外,操作系统需要在磁盘交换区中分配空间,以用来在一个进程换出时在磁盘上有放置此进程的空间; 2、进程执行时:重置MMU,刷新TL 阅读全文

posted @ 2017-10-30 20:51 chenjx_ucs 阅读(604) 评论(0) 推荐(0) 编辑

2017年10月27日

分页与页表

摘要: 概念性内容不再阐述。直接给出解释。 MMU为内存管理单元,其作为硬件用于将虚拟地址映射为物理地址。上图右边部分,箭头所述部分内容即采用MMU完成地址映射。 虚拟地址通过多级页表映射后对应末级页表项,末级页表项中存放的是物理地址页框号。即一个虚拟地址,通过MMU找到对应的物理页框号,通过虚拟地址后12 阅读全文

posted @ 2017-10-27 21:05 chenjx_ucs 阅读(1931) 评论(0) 推荐(0) 编辑

空闲内存管理

摘要: 学习自《现代操作系统》 操作系统在动态分配内存时(malloc,new),需要对空间内存进行管理。一般采用了两种方式:位图和空间链表。 1、使用位图的存储管理 内存被划分为若干个几字节大小的分配单元,每个分配单元是否是空闲的情况采用位图来进行描述,如果已分配,相应位置1,未分配,置0。当需要分配新内 阅读全文

posted @ 2017-10-27 14:54 chenjx_ucs 阅读(1293) 评论(0) 推荐(0) 编辑

缓冲区溢出攻击

摘要: 图片来源:http://blog.csdn.net/u010651541/article/details/49849557 主要根据此图给出一些程序变量的分配情况,以及缓冲区溢出攻击的简单原理。 上述图主要描述进程虚拟地址空间,即用户空间内容,进程内核地址空间为所有进程共用(Linux内核中) 栈区 阅读全文

posted @ 2017-10-27 10:34 chenjx_ucs 阅读(233) 评论(0) 推荐(0) 编辑

2017年10月26日

多线程互斥问题

摘要: 采用pthread_create建立一个新线程,与fork方式建立新进程不同(尽管在Linux环境下进程与线程具有相同概念)。所有pthread将会共用主线程中的所有变量,而不是如fork方式仅仅将所有变量引用加1。由于pthread共用问题的存在,将会引发在Linux下多线程编程的互斥问题。测试如 阅读全文

posted @ 2017-10-26 15:03 chenjx_ucs 阅读(324) 评论(0) 推荐(0) 编辑

为什么IO多路复用需要采用非阻塞式IO

摘要: 近段时间开始学习《Unix网络编程》,代码实现了一个简单的IO多路复用+阻塞式的服务端,在学习了非阻塞式IO后,有一个疑问,即: 假如调用了select,并且关注了几个描述字,当关注的描述字可读时,select成果返回并告诉我对应套接口已可读,此时采用阻塞式read或非阻塞式read去读套接口有何区 阅读全文

posted @ 2017-10-26 10:28 chenjx_ucs 阅读(597) 评论(0) 推荐(0) 编辑

2017年10月25日

客户端父进程提前死亡

摘要: 示例代码: 问题描述:上述为客户端程序,如果父进程在子进程之前意外死亡,而子进程随后从套接字读到了EOF,则会存在如下问题: 由于父进程提前死亡,对于子进程而言,直接父亲进程死亡,其成为孤儿进程,在Linux内核中,这样的孤儿进程将由init进程收养。子进程读到EOF后,代码A将会执行,子进程向其父 阅读全文

posted @ 2017-10-25 14:58 chenjx_ucs 阅读(177) 评论(0) 推荐(0) 编辑

服务器过早终止问题

摘要: 示例代码: 上述代码,如果去掉第八行,即当服务器终止后,客户端子进程接收到服务器终止信号,但并不终止客户端父进程,则会出现如下问题: 父进程可以继续接收来自于stdin的输入信息,并将其发送给sockfd套接字,由于服务器已经关闭,当sockfd套接字的第一个分节内容到达服务器时,将会引发一个RST 阅读全文

posted @ 2017-10-25 14:44 chenjx_ucs 阅读(179) 评论(0) 推荐(0) 编辑

关于shutdown和close

摘要: 示例代码: 上述代码来源《Unix网络编程》卷1第350页,为客户端程序。在A处fork一个进程,子进程用于接收服务端发送给sockfd的消息,父进程用于接收stdin消息并发送给sockfd。 当父进程发送消息结束后,调用shutdown命令向服务端发送FIN,并pause()停止,服务端接收FI 阅读全文

posted @ 2017-10-25 14:38 chenjx_ucs 阅读(215) 评论(0) 推荐(0) 编辑

2017年10月24日

io多路复用-select()

摘要: 参照《Unix网络编程》相关章节内容,实现了一个简单的单线程IO多路复用服务器与客户端。 普通迭代服务器,由于执行recvfrom则会发生阻塞,直到客户端发送数据并正确接收后才能够返回,一个服务器进程只能服务于一个客户端,解决这种问题可采用多线程方式(参见虚拟机隐藏进程检测工具实现)和IO多路复用s 阅读全文

posted @ 2017-10-24 15:52 chenjx_ucs 阅读(248) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页

导航