linux 进程题目,Linux学习题目

1、什么是程序,什么是进程?

1. 程序是保存在磁盘上的可执行文件。

2. 运行程序时,需要将可执行文件加载到内存,形成进程。

2、什么是内存分配,什么是内存映射?

1.所谓内存分配与释放,其本质就是建立或取消虚拟内存和物理内存间的映射关系。

2.将文件/设备空间映射到共享内存区

3、进程间通信的方式有哪些,并写出主要的操作函数。

?1) 简单进程间通信:

命令行参数、环境变量、信号、文件。

?2) 传统进程间通信:

管道(fifo/pipe)。

?3) XSI进程间通信:

共享内存、消息队列、信号量。

?4) 网络进程间通信:

套接字。

4、线程与进程的异同?

1.进程:拥有4G独立的虚拟内存 复制数据空间 共享代码区

2.线程:拥有独立的栈区 同一个进程中的线程共享代码区、数据区、堆区 轻量级的

线程与进程的区别?

进程:重量级的 一个进程里至少有一个线程 一个进程可以有多个线程

线程共享进程的资源(线程只拥有自己独立的栈内存)

线程只是进程的一个执行线程

5、写出IOS/SIO七层模式和TCP/IP网络的四层模型,路由器和TCP协议属于哪一层?

1.应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

2.应用层,传输层,互联网层,网络接口层

3.路由属于互联网层

4.TCP属于传输层

6、TCP与UDP的区别?

1.TCP:数据传输控制协议 数据流 连接 可靠 数据完整且有序 比UDP要低

2.UDP:用户数据报协议 数据报 不连接 不可靠 不保证数据的完整和有序 传输效率要高

7、fork()和vfork()的区别。

1.pid_t fork() 创建一个子进程

父进程返回的是子进程的进程id

子进程返回的是0

2.pid_t vfork()

与vfork不同之处在于:vfork的子进程并不会拷贝父进程的数据区、堆栈区 创建进程的效率比较高

子进程基本上可以用exec系列函数直接取代该进程

vfork保证先让子进程执行

exit 才能正确的退出子进程

8、进程的内存空间从小到大包括哪些区,这些区分别存储什么数据?

1.代码区->数据段->BSS段->堆区->堆栈缓冲区(共享库、共享内存)->栈区->命令行参数 环境表->内核区

?代码区(text):

可执行指令、字面值常量、具有常属性的全局和静态局部变量。只读。

?数据区(data):

初始化的全局和静态局部变量。

?BSS区:

未初始化的全局和静态局部变量。

进程一经加载此区即被清0。

数据区和BSS区有时被合称为全局区或静态区。

?堆区(heap):

动态内存分配。从低地址向高地址扩展。

?栈区(stack):

非静态局部变量,

包括函数的参数和返回值。

从高地址向低地址扩展。

堆区和栈区之间存在一块间隙,一方面为堆和栈的增长预留空间,同时共享库、共享内存等亦位于此。

?命令行参数与环境区:

命令行参数和环境变量。

9、什么是可靠信息,什么是不可靠信号? 信号有什么作用?

1.可靠

?1) 位于[SIGRTMIN(34),SIGRTMAX(64)]区间的信号都是可靠信号。

?2) 支持排队,不会丢失。

?3) 无论可靠信号还是不可靠信号,都可以通过sigqueue/sigaction函数发送/安装,以获得比其早期版本kill/signal函数更可靠的使用效果。

2.不可靠

?1) 那些建立在早期机制上的信号被称为“不可靠信号”,小于SIGRTMIN(34)的信 号都是不可靠信号。

?2) 不支持排队,可能会丢失。同一个信号产生多次,进程可能只收到一次该信号

?3) 进程每次处理完这些信号后,对相应信号的响应被自动恢复为默认动作,除非 显示地通过signal函数重新设置一次信号处理程序。

10、动态库与静态库的区别?

1.本质

使用静态库 静态库中的代码指令复制一份到可执行程序中 程序在执行时不再依赖于静态库

使用动态库 在可执行程序中嵌入了动态库中的相对地址 程序在执行时跳到动态库相对位置执行代码

2.静态库 生成的最终可执行程序 比较大 运行相对较快 编译过程较慢

动态库 生成的最终可执行程序 比较小 运行相对较慢 编译过程较快

11、线程同步的机制有哪些?分别有啥特点?

1.当多个线程同时访问其所共享的进程资源时,需要相互协调,以防止出现数据不一致、不完整的问题。这就叫线程同步。

12.请简述TCP三次握手和四次分手的过程,并阐述这样做的作用。

1.确定双方是否接收和发送信息的完整性

2.确定两边的接收和发送都已经完成

13.可以从哪些方面想办法提高服务器的并发性?

1.并发性 一个系统最大的进程数 远远小于 线程的最大数量

14.死锁的情况有哪些?如何避免死锁?

1. 互斥锁死锁情况:

1.不同线程申请普通锁,将按照顺序依次申请锁并加锁 没有解锁

2.一个线程对一个普通锁两次加锁将导致死锁

3.按不同顺序访问互斥锁导致死锁 线程1 A,B 线程2 B,A

15、进程?

1.进程间通信(Interprocess Communication, IPC),是指两个或多个进程之间进行数据交换的过程

3. 一个程序(文件)可以同时存在多个进程(内存)。

4. 进程在内存空间中的布局就是进程映像,

16、虚拟内存

1. 每个进程都有各自互独立的4G字节虚拟地址空间。

2. 用户程序中使用的都是虚拟地址空间中的地址,永远无法直接访问实际物理内存地址。

3. 虚拟内存到物理内存的映射由操作系统动态维护。

4. 虚拟内存一方面保护了操作系统的安全,另一方面允许应用程序,使用比实际物理内存更大的地址空间。

17、线程?

一、基本概念

1、线程就是程序的执行路线,即进程内部的控制序列,或者说是进程的子任务。

2、线程,轻量级,不拥有自己独立的内存资源,共享进程的代码区、数据区、堆区(注意没有栈区)、环境变量和命令行参数、文件描述符、信号处理函数、当前目录、用户ID和组ID等资源。

3、线程拥有自己独立的栈,因此也有自己独立的局部变量。

4、一个进程可以同时拥有多个线程,即同时被系统调度的多条执行路线,但至少要有一个主线程。

二、基本特点

1、线程是进程的一个实体,可作为系统独立调度和分派的基本单位。

2、线程有不同的状态,系统提供了多种线程控制原语,如创建线程、销毁线程等等。

3、线程不拥有自己的资源,只拥有从属于进程的全部资源,所有的资源分配都是面向进程的。

4、一个进程中可以有多个线程并发地运行。它们可以执行相同的代码,也可以执行不同的代码。

5、同一个进程的多个线程都在同一个地址空间内活动,因此相对于进程,线程的系统开销小,任务切换快。

6、线程间的数据交换不需要依赖于类似IPC的特殊通信机制,简单而高效。

7、每个线程拥有自己独立的线程ID、寄存器信息、函数栈、错误码和信号掩码。

8、线程之间存在优先级的差异。

三、POSIX线程(pthread)

1、早期厂商各自提供私有的线程库版本,接口和实现的差异非常大,不易于移植。

2、IEEE POSIX 1003.1c (1995)标准,定义了统一的线程编程接口,遵循该标准的线程实现被统称为POSIX线程,即pthread。

3、pthread包含一个头文件pthread.h,和一个接口库libpthread.so。

4、功能

线程管理:创建/销毁线程、分离/联合线程、设置/查询线程属性。

线程同步

A. 互斥量:创建/销毁互斥量、加锁/解锁互斥量、设置/查询互斥量属性。

B. 条件变量:创建/销毁条件变量、等待/触发条件变量、设置/查询条件变量属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值