--操作系统
文章平均质量分 51
Think_Idea
水滴石穿
展开
-
堆与栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2015-10-17 23:39:36 · 280 阅读 · 0 评论 -
Linux下c语言多线程编程
引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。 使用转载 2015-10-18 11:50:37 · 329 阅读 · 0 评论 -
Unix Domain Socket– IPC通信机制
什么是Unix Domain Socket基于socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC 更有效率 :不需要经过网络协议栈不需要打包拆包、计算校验和、维护序号和应答等只是将应用层数据从一原创 2015-12-27 21:41:27 · 1950 阅读 · 0 评论 -
进程间通信(IPC)方式
进程间的通讯(IPC)方式为什么要进行进程间的通讯(IPC (Inter-process communication))数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了转载 2015-12-27 21:16:07 · 407 阅读 · 0 评论 -
高性能IO模型浅析
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(3)IO多路复用(IO Multiplexi转载 2016-03-25 18:36:05 · 532 阅读 · 0 评论 -
内存映射文件原理
一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。 原理首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一一对应关系,在这里主要是只 硬盘上文件 的位置与进程 逻辑地址空间中 一块大转载 2016-03-26 11:51:43 · 12647 阅读 · 6 评论 -
系统缓冲区、内核缓冲区、IO库操作本身的缓冲区 之间联系
FILE结构里本身带有一个缓冲。而系统在操作IO的时候可能会还有一个缓冲。fflush函数单纯是调用系统地写操作(比如WriteFile)把FILE结构里的那个缓冲的数据传给系统,这个时候很可能仅仅是写到系统的缓冲区里了。fsync函数是调用系统的flush函数(FlushFileBuffers),清空系统的写入缓冲区。 C是独立于系统存在的,所以它只能假设系统本身没有转载 2016-03-26 13:31:36 · 1033 阅读 · 0 评论