Unix高级环境编程
来源:互联网 发布:fanuc pmc编程 编辑:程序博客网 时间:2024/05/17 07:23
ret返回值为0,说明当前TCP的接收缓冲区为空,暂时没有到达的数据。
答:错误
。这里read返回0说明对方的TCP关闭了连接。如果当前TCP的接收缓冲区为空,暂时没有到达的数据,unix会让执行read的进程进入“阻塞”状态等待数据,而不是返回0。
UNIX的系统调用执行成功将返回一个非负数的整数值,程序用socket 机制使用系统
调用ret=write(sock,buf,1000);通过TCP向远端主机发送1000字节数据,ret的返
回值为1000,由于TCP提供了可靠的传输服务,所以可以断定这1000字节数据已经成
功地传输到了接收端。
答:错误。这里write成功返回,也就是系统调用成功返回
,只能意味着待发送的数据已经被拷贝到了TCP的发送缓冲区队列,在实际发送操作执行之前write就返回。如果网络设备故障,无法通信,尽管先前的write“成功”返回,也无法保证随后把这1000字节数据送达对方
UNIX操作系统被设计得非常健壮,所以由于应用程序中在运行过程中 由于数组访问
越界等程序错误不会导致系统崩溃而重新启动。 答:正确。UNIX系统采用虚拟内存
护技术,应用程序处于“用户态”运行,由于数组访问越界等程序错误,只会导致
当前进程中止,不会导致系统其它进程和操作系统内核的崩溃。导致内核崩溃而重新
启动的bug应当是操作系统中处于“核心态”运行的系统代码中的bug
UNIX中的信号机制就如同软件中断一样,对SIGINT信号来说,用户程序可以设置一个
处理程序,信号发生时,就如同执行中断服务程序一样,这个处理程序得到执行,然后程序恢复到信号发生前的状态继续运行。
答:错误。当信号中断的进程正处于“用户态”执行时,其表现如同执行中断服务程序一样,这个处理程序得到执行,然后程序恢复到信号发生前的状态继续运。但是,当信号中断的进程正处于阻塞态的系调用时,系统调用将被打断返回-1而不是恢复阻塞状态继续进行。
fork后得到两个几乎完全相同的进程,父子进程可以共享代码段, 但是父子进程必
须有独立的数据段和堆栈段。设代码段,数据段和堆栈段的大小分别为a,b,c,那么,
fork()后父子进程占用的物理内存总大小是a+2(b+c)。
答:错误。尽管fork后,
从逻辑上可以得到两个几乎完全相同的进程,父子进程有独立的数据段、堆栈段和指令段,但是,操作系统可以通过使用copy-on-write技术等方式,使得父子进程共享
同一段物理内存,除了代码段可以共享之外,也可以共享数据段和堆栈段。
如果父进程不对僵尸进程进行处理,那么,僵尸进程过多,即使系 统有足够内存,也
可能导致系统无法正常工作。
答:正确。进程执行的结束阶段产生僵尸进程,原进程所占有的数据段、指令段、堆栈段内存都已经释放,系统仅为僵尸进程保存一个进程表表项。但是,僵尸进程过多会因为占用光内核中全部的进程表表项,导致无法启动新的进程。
UNIX操作系统被设计得非常健壮,所以程序在运行过程中不会产 生死锁。
答:错误。像信号量等,UNIX仅给出了一组信号量操作的机制,如果应用程序设计的多个进程之间对信号量的操作处置不当,仍然可能导致死锁。操作系统没有办法检测出应用进程之间的逻辑操作不正确产生的死锁。使用管道等其他的进程之间通信的系统调用
,也可能产生死锁程序从启动运行到运行结束总共持续了t秒,占用用户时间为t1秒,系统时间为t2秒,所以有t=t1+t2 成立。 答:错误。程序从启动运行到运行结束总共持续了t秒,这段时间由三部分构成:用户态CPU时间t1,系统态CPU时间t2,另有,进程等待CPU的时间和进程因睡眠放弃使用CPU的时间t3,有t=t1+t2+t3,所以并不是所有条件下t=t1+t2成立如果父进程不对僵尸进程进行处理,那么,已经结束的僵尸进程的数据段、 堆栈段、
指令段将继续占用系统的内存。僵尸进程过多,最终会造成虚拟内存被耗尽,导致系统无法正常运行。
答:错误。进程执行的结束阶段产生僵尸进程,原进程所占有的数据段、指令段、堆栈段内存都已经释放,系统仅为僵尸进程保存一个进程表表项。僵尸进程过多会因为占用了内核中全部的进程表表项,导致无法启动新的进程,而不是由于对内存空间的占用
两台主机上的两个进程利用UDP通信,发送端发得太快,接收端由于忙于 其他处理,
接收得很慢,那么就会丢失数据。
答:正确。UDP通信,系统不提供流量控制机制,当接收端缓冲区满时,没有一种机制通知发送端进程阻塞,所以可能会因为发送端发得太快而丢失数据
- 《UNIX环境高级编程》
- unix环境高级编程
- unix环境高级编程
- Unix环境高级编程
- UNIX 环境高级编程
- Unix环境高级编程
- unix环境高级编程
- Unix环境高级编程
- UNIX 环境高级编程
- Unix环境高级编程
- Unix高级环境编程
- Unix 环境高级编程
- unix环境高级编程
- UNIX环境高级编程
- UNIX环境高级编程(-)
- UNIX环境高级编程读书笔记
- 《 Unix环境高级编程 》笔记
- UNIX环境高级编程整理
- AndroidStudio快捷键设置
- PHP数组问题
- 程序内存分配
- [LeetCode] 226 Invert a binary tree.
- gcc __attribute__ ((weak, alias (#name)))
- Unix高级环境编程
- JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法
- Linux debian常用软件与虚拟机的安装配置
- duilib JS与C++的相互调用
- swift学习
- 项目三——单链表的应用(3)
- “No 'Access-Control-Allow-Origin' header is present on the requested resource”
- jQuery源码学习 之 get与eq的区别
- android中部分资源的应用