高级操作系统

高级操作系统

ID:33840214

大小:268.91 KB

页数:7页

时间:2019-02-28

高级操作系统_第1页
高级操作系统_第2页
高级操作系统_第3页
高级操作系统_第4页
高级操作系统_第5页
资源描述:

《高级操作系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、unixhistory:UNIX:1969Thompson&RitchieAT&TBellLabsBSD:1978BerkeleySoftwareDistributionCommercialVendors:Sun,HP,IBM,SGI,DECPOSIX:1986IEEEPortableOperatingSystemunIXlinushistory:Linux:1991LinusTorvaldsatIntel386(i386)StableversionhistoryVersion1.0ofMarch1994supportedon

2、lyUPi386machines.Version1.2ofMarch1995addedsupportforAlpha,SparcandMIPS.Version2.0ofJune1996includedSMPsupportandaddedsupportformoreprocessors.Version2.2ofJanuary1999Version2.4.0ofJanuary2001Version2.6-current(December17,2003tothepresent)OpenSource:GPL,LGPL,Cathedra

3、landtheBazaarfork()函数,(建立一个新的进程)头文件:#include函数定义:intfork(void);返回值:子进程中返回0,父进程中返回子进程ID,出错返回-1函数说明:一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(childprocess)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”

4、,这意味着父子进程间不共享这些存储空间,它们之间共享的存储空间只有代码段。vfork(建立一个新的进程)相关函数wait,execve头文件#include定义函数pid_tfork(void)函数说明:vfork()会产生一个新的子进程,其子进程会复制父进程的数据与堆栈空间,并继承父进程的用户代码,组代码,环境变量、已打开的文件代码、工作目录和资源限制等。返回值:如果vfork()成功则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程中则返回0。如果vfork失败则直接返回-1,失败原因存于

5、errno中。vfork与fork主要有三点区别:1.fork():子进程拷贝父进程的数据段,堆栈段2.vfork():子进程与父进程共享数据段3.fork()父子进程的执行次序不确定,vfork保证子进程先运行,在调用exec或exit之前与父进程数据是共享的,在它调用exec或exit之后父进程才可能被调度运行。vfork()保证子进程先运行,在它调用exec或exit之后父进程才可能被调度运行.如果在调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。1)fork()系统调用是创建一个新进程的首选方式,for

6、k的返回值要么是0,要么是非0,父进程与子进程的根本区别在于fork函数的返回值.2)vfork()系统调用除了能保证用户空间内存不会被复制之外,它与fork几乎是完全相同的.vfork存在的问题是它要求子进程立即调用exec,而不用修改任何内存,这在真正实现的时候要困难的多,尤其是考虑到exec调用有可能失败.3)vfork()的出现是为了解决当初fork()浪费用户空间内存的问题,因为在fork()后,很有可能去执行exec(),vfork()的思想就是取消这种复制.4)现在的所有unix变量都使用一种写拷贝的技术(cop

7、yonwrite),它使得一个普通的fork调用非常类似于vfork.因此vfork变得没有必要.Linux使用copy-on-write(COW)写时复制技术,父进程和子进程共享页框而不是复制页框,然而,只要页框被共享,它们就不能被修改。无论父进程还是子进程合适试图写一个共享的页框,就会产生一个异常,这是内核就把这个分页复制到一个新的页框中并标记为可写。原来的页框仍然是写保护的:当其他进程试图写入时,内核检查写进程是否是这个页框的唯一属主,如果是,就把这个页框标记为对这个进程是可写的。exec指的是一组函数,一共6个,exe

8、cl,execlp,execle,execv,execvp,execve,作用是根据制定的文件名找到可执行文件,并用它来取代调用进程的内容,但进程ID等表面信息依然保持。就是说在调用进程内部执行一个可执行文件,这个被执行文件并没有生成新的进程,而是在原有进程的基础上,替换原有

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。