- 博客(12)
- 资源 (8)
- 收藏
- 关注
原创 fork & exec时打开文件的变化
在分析linux系统调用fork,linux系统调用execve时,已经知道:1.fork时,子进程会复制父进程的打开文件描述符表2.exec时,进程的打开文件描述符表保持不变 用以下代码观察fork,exec打开文件的变化情况:父进程fork子进程,睡眠一定时间(方便命令行查看打开文件);子进程fork孙进程,睡眠一定时间;孙进程exec新程序,新程序也睡眠一定时间
2013-06-30 16:53:53 2128
原创 linux 系统调用fork vfork clone
fork:通过fork创建新进程vfork:主要用于马上执行exec的情况,因为马上就exec装入新的程序,所以可以去掉fork中分配新的地址空间等操作,进而加速进程创建clone:功能更强,参数更多;主要用于创建线程/父子进程资源共享等,可以通过设置相应的参数实现fork、vfork的功能 I.系统调用i.系统调用arch/x86/kernel/syscall_table
2013-06-29 12:02:18 2853
原创 c++ 虚函数表
c++中的虚函数作用主要是实现多态,用父类指针指向子类实例,通过父类指针调用子类成员函数,而这个成员函数在父类中被声明为虚函数。要实现父类指针调用子类成员函数,主要满足以下两个条件:1、子类实例指针转换成父类指针时,指针所指的子类实例内容必须与父类内容完全一致(成员及顺序);主要是通过在子类继承父类时,按继承顺序将父类内容与子类成员组成子类内容来实现,将子类实例指针偏移一定量就能得到父类指
2013-06-27 22:08:43 1212
原创 linux 虚拟文件系统VFS
与其它系统完美共存是linux的成功之处之一,linux可以透明挂载其它系统文件格式的磁盘或分区,如Windows的FAT32、NTFS等;linux使用虚拟文件系统VFS(Virtual Filesystem Switch)来支持多种类型的文件系统。VFS的思想是:将不同类型文件系统信息存放到内核中,linux所有文件系统支持的每个操作都有一个域与之对应,当读、写或其它功能调用时内核
2013-06-24 18:51:52 1916
原创 linux SysV IPC msg消息队列实现
消息队列是由存放在内核中的消息组成的链表,由IPC id标识。由msgget创建新队列或打开已经存在的队列由msgsnd将消息添加到消息队列尾,每个消息包括正整数标识的类型,非负的长度,及数据。由msgrcv从消息队列中取消息,不必按FIFO取消息,可以通过类型字段取相应的消息。 I.数据结构i.msg_queue 87 /* one msq_queue structu
2013-06-22 11:48:06 3219
原创 linux SysV IPC shm共享内存实现
共享内存可以使多个进程共享某段内存,由于不需要进程间数据复制,所以是速度最快的IPC。多个进程访问共享内存时需要同步机制,如进程A往共享内存中写数据时,进程B不能使用共享内存;通常采用信号量同步多进程访问共享内存。共享内存实现主要有以下几点:1.分配物理内存2.将物理内存映射到进程的地址空间;通过修改进程的页表,可以虚拟地址直接访问物理内存3.进程不再使用共享内存时,取消物理内
2013-06-21 21:41:30 4304
原创 linux SysV IPC sem信号量实现
信号量值是一个计数器,用于控制多进程对共享资源的访问;进程获取共享资源需要以下步骤:1.检查资源的信号量值2.如果信号量值是正,进程可以访问资源;进程将信号量值减1,表示进程已经使用了一个资源3.如果信号量值是0,进程被阻塞直到信号量值大于0;被阻塞进程被唤醒时重复执行步骤1注:检查信号量值和减1必须为原子操作 SysV信号量有以下特征:1.信号量是一个信号量值集合,在
2013-06-20 23:18:11 3453
原创 semop SEM_UNDO标识
当操作信号量(semop)时,sem_flg可以设置SEM_UNDO标识;SEM_UNDO用于将修改的信号量值在进程正常退出(调用exit退出或main执行完)或异常退出(如段异常、除0异常、收到KILL信号等)时归还给信号量。如信号量初始值是20,进程以SEM_UNDO方式操作信号量减2,减5,加1;在进程未退出时,信号量变成20-2-5+1=14;在进程退出时,将修改的值归还给信号量,信号
2013-06-19 21:45:59 5126
原创 linux SysV IPC实现
IPC(Interprocess Communication)表示进程间通信机制;System V IPC机制主要有消息队列、共享内存、信号量,linux中实现了SysV IPC。 I.SysV IPC创建/获取消息队列、共享内存、信号量的创建/获取API原型如下:int msgget(key_t key, int msgflg);int shmget(key_t key, s
2013-06-14 20:44:52 2523
原创 linux cred管理
I.credential管理linux系统中,一个对象操作另一个对象时通常要做安全性检查。如一个进程操作一个文件,要检查进程是否有权限操作该文件。linux内核中,credential机制的引入,正是对象间访问所需权限的抽象;主体提供自己权限的证书,客体提供访问自己所需权限的证书,根据主客体提供的证书及操作做安全性检查。证书管理术语:客体:指用户空间程序直接可以操作的系统对象,如进
2013-06-13 20:43:43 7586
原创 linux idr机制
I.idr机制i.idr介绍系统许多资源都用整数ID来标识,如进程ID、文件描述符ID、IPC ID等;资源信息通常存放在对应的数据结构中(如进程信息存放在task_struct中、ipc信息存放在ipc_perm中),id与数据结构的关联机制有不同的实现,idr机制是其中的一种。idr,id radix的缩写。idr主要用于建立id与指针(指向对应的数据结构)之间的对应关系。idr用
2013-06-07 21:45:23 8536 1
原创 linux TCP超时重传
TCP超时重传是保证TCP可靠性传输的机制之一,当超时后仍没有收到应答报文,就重传数据包并设置超时时钟(超时时间一般增大到原超时时间2倍);直到收到应答报文或超过最大重试次数。linux TCP超时重传是通过设置重传超时时钟icsk_retransmit_timer来实现的。零窗探测超时时钟与重传超时时钟共用icsk_retransmit_timer,根据icsk_pending是IC
2013-06-04 11:16:48 23427 3
存储技术原理分析:基于Linux_2.6内核源代码(部分)
2014-03-14
The Second Extended File System
2013-12-08
Beamer v3.0 with PSTricks
2013-12-08
python cookbook
2013-12-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人