我们现在的电脑基本上都是多任务,我们聊着 QQ 的时候,同时可以看着视频,这里相当于 QQ 和视频两个程序同时运行着(两个进程)。早期的时候,电脑的 CPU 是单核的(单核理论上只运行操作一个任务),那它是如何做到多任务的呢?这就涉及到进程的调度策略。现在给大家举这么一个例子,有 A,B,C 三个进程,在我们单 CPU 的情况下,每一个时刻只有一个进程在运行,如果 A 运行完,B 运行,B 运行完,C 运行,C 运行完,A 运行,而 CPU 的运算速度足够快,A 两次运行时间间隔足够短,从宏观上就我们就看到...
分类:
系统相关 时间:
2015-05-21 19:35:46
阅读次数:
221
dup() 和 dup2() 是两个非常有用的系统调用,都是用来复制一个文件的描述符,使新的文件描述符也标识旧的文件描述符所标识的文件。
这个过程类似于现实生活中的配钥匙,钥匙相当于文件描述符,锁相当于文件,本来一个钥匙开一把锁,相当于,一个文件描述符对应一个文件,现在,我们去配钥匙,通过旧的钥匙复制了一把新的钥匙,这样的话,旧的钥匙和新的钥匙都能开启这把锁。对比于
dup(), d...
分类:
系统相关 时间:
2015-05-20 18:34:04
阅读次数:
252
在 Linux 的世界里,一切设备皆文件。我们可以系统调用中 I/O 的函数(I:input,输入;O:output,输出),对文件进行相应的操作( open()、close()、write()
、read() 等)。
打开现存文件或新建文件时,系统(内核)会返回一个文件描述符,文件描述符用来指定已打开的文件。这个文件描述符相当于这个已打开文件的标号,文件描述符是非负整数,是文件的标...
分类:
系统相关 时间:
2015-05-20 14:49:09
阅读次数:
221
1)fork(): 父子进程的执行次序不确定。
vfork():保证子进程先运行,在它调用 exec(进程替换) 或 exit(退出进程)之后父进程才可能被调度运行。
2)fork(): 子进程拷贝父进程的地址空间,子进程是父进程的一个复制品。
vfork():子进程共享父进程的地址空间(准确来说,在调用 exec(进程替换) 或 exit(退出进程) 之前与父进程数据是共享的)...
分类:
系统相关 时间:
2015-05-19 21:02:31
阅读次数:
246
多线程编程操作系统原理概念 时间片 进程状态 上下文: 对进程来说,就是进程的执行环境,具体就是各个变量和数据,包括所有的寄存器变量、打开的文件、内存信息等。 进程的写时复制:由于一般fork后面都接着exec,所以,现在的fork都在用写时复制的技术,顾名思意,就是,数据段,堆,栈,一...
分类:
编程语言 时间:
2015-05-19 20:36:59
阅读次数:
282
本帖最后由 雇佣兵333 于 2015-5-19 16:15 编辑c教程目录:Linux开发快速入门培训gcc快速入门Makefile快速入门GDB快速入门Linux系统编程之文件篇01认识计算机系统(上)计算机系统组成计算机系统硬件组成总线I/O设备内存处理器(运算器+控制器)02认识计算机系统(...
分类:
系统相关 时间:
2015-05-19 18:15:10
阅读次数:
349
I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用。
select(),poll(),epoll()都是I/O多路复用的机制。I/O多路复用通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪,就是这个文件描述符进行读写操作之前),能够通知程序进行相应的读写操作。但select(),poll...
分类:
系统相关 时间:
2015-05-18 20:54:09
阅读次数:
256
4. read/write read函数从打开的设备或文件中读取数据。#include ssize_t read(int fd, void *buf, size_t count); 返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回.....
分类:
系统相关 时间:
2015-05-05 16:07:42
阅读次数:
359
进程间通信概述需要进程通信的原因:数据传输资源共享通知事件进程控制Linux进程间通信(IPC)发展由来Unix进程间通信基于System V进程间通信(System V:UNIX系统的一个分支)POSIX进程间通信(POSIX:可移植操作系统接口,为了提高UNIX环境下应用程序的可移植性。很多其他...
分类:
系统相关 时间:
2015-03-30 22:54:31
阅读次数:
292