系统调用和库函数作业知识点整理

1

下面关于系统调用的描述中,错误的是(B)

A.系统调用把应用程序的请求传输给系统内核执行
B.系统调用函数的执行过程应该是在用户态
C.利用系统调用能够得到操作系统提供的多种服务
D.是操作系统提供给编程人员的接口
E.系统调用给用户屏蔽了设备访问的细节
F.系统调用保护了一些只能在内核模式执行的操作指令

知识点

A. 系统调用是用户程序与操作系统内核之间的接口
B. 系统调用函数的执行过程实际上是在内核态进行的。
用户程序通过系统调用请求服务,这一请求会导致从用户态切换到内核态,内核态完成具体的操作后再返回用户态。

2

下面的函数哪个是系统调用而不是库函数()?

A.printf B.scanf
C.fgetc D.read
E.print_s F.scan_s

知识点

系统调用是操作系统内核提供的接口,直接与内核交互,
库函数是用户空间的库提供的接口,通常是基于系统调用实现的。

3

知识点

A. 僵尸进程是指一个进程已经终止,但是它的父进程尚未读取其退出状态,因此它仍然存在于进程表中。僵尸进程不会被 init 进程接管。只有当父进程终止僵尸进程的状态才会被 init 进程接管,并最终从进程表中移除。
B. 孤儿进程是指一个父进程已经终止,而其子进程仍然运行的进程。孤儿进程会被 init 进程接管,init 进程会成为它们的父进程。
D. 当一个子进程通过 fork 创建时,它会复制父进程的地址空间,
但在现代操作系统中实现了写时拷贝技术。在这种技术下,父子进程最初共享相同的物理内存页面,直到其中一个进程尝试修改某个页面时,操作系统才会为该进程创建一个新的物理页面。这意味着,即使子进程只进行读操作,它和父进程也不会完全共享物理地址空间。一旦有写操作发生,就会产生独立的物理页面。

4

在抢占式多任务处理中,进程被抢占时,哪些运行环境需要被保存下来?[多选]

A.所有cpu寄存器的内容 B.全局变量
C.页表指针 D.程序计数器

知识点

ACD

C. 页表指针

页表指针(或页目录基址寄存器)指向进程的页表,定义了进程的虚拟内存到物理内存的映射。在进程切换时,需要保存和恢复这个指针,以确保进程的内存映射保持一致。
D. 程序计数器

程序计数器(也称为指令指针寄存器)保存了当前正在执行的指令地址。在进程切换时,需要保存程序计数器的值,以便恢复进程时能够继续执行被抢占时的指令。

(CD都是硬件上下文的一部分)

5

下列有关进程的说法中,错误的是? [多选]

A.进程与程序是一一对应的 B.进程与作业是一一对应的
C.进程是静态的 D.进程是动态的过程

知识点

**进程和程序或者作业都不是一一对应的。**一个程序可以对应多个进程。程序是静态的代码,而进程是动态的执行实体。

6

系统感知进程的唯一实体是

A.进程id B.进程控制块
C.进程管理器 D.进程名

知识点

A:PID,部分正确
B:PCB是系统感知和管理进程的唯一实体。

7

关于僵尸进程,以下描述正确的有?

A.僵尸进程必须使用waitpid/wait接口进行等待 B.僵尸进程最终会自动退出
C.僵尸进程可以被kill命令杀死
D.僵尸进程是因为父进程先于子进程退出而产生的

知识点

僵尸进程**需要其父进程调用 wait 或 waitpid 来读取其退出状态,**以便释放其占用的进程表条目。

僵尸进程不会自动退出,它们在父进程读取其状态之前会一直存在,直到父进程处理它。

僵尸进程实际上是已经终止的进程,它们不能被 kill 命令杀死,因为它们已经处于终止状态。只有其父进程通过 wait 系统调用才能将其完全清除。

8

下面有关孤儿进程和僵尸进程的描述,说法错误的是? 作业内容
A.孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。
B.僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
C.孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
D.孤儿进程和僵尸进程都可能使系统不能产生新的进程,都应该避免

知识点

孤儿进程会被init进程接管,不会占用进程表

9

以下描述错误的有
A.守护进程:运行在后台的一种特殊进程,独立于控制终端并周期性地执行某些任务。
B.僵尸进程:一个进程 fork子进程,子进程退出,而父进程没有 wait/waitpid子进程,那么子进程的进程描述符仍保存在系统中,这样的进程称为僵尸进程。
C.孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,这些子进程称为孤儿进程。(孤儿进程将由 init进程收养并对它们完成状态收集工作)
D.精灵进程:精灵进程退出后会成为僵尸进程

知识点

精灵进程(通常称为“守护进程”)在退出后不会自动成为僵尸进程。实际上,**精灵进程正常退出后,其资源会被清理,**而不会留下僵尸状态。

10

使用shell时,默认的环境变量放在哪里?
A.~/.bash_profile
B.~/.bash
C./etc/profile.d
D.~/bash

知识点

使用 shell 时,默认的环境变量通常放在:A
A. ~/.bash_profile 是用户级的配置文件,用于设置环境变量和启动程序。其他选项的解释如下:

其他的:
C. /etc/profile.d:这个目录包含了多个脚本文件,通常用于全局环境变量的设置,但不是直接的配置文件。

11

以下描述正确的有 [多选] :AC
A.子进程默认会复制拥有与父进程相同的环境变量
B.环境变量使shell运行环境配置变的更加复杂
C.环境变量可以使用export命令设置
D.删除一个环境变量可以使用unset和rm命令

知识点

unset 可以用来删除环境变量,而 rm 是用于删除文件的,不用于删除环境变量。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统调用库函数是两种不同的编程接口。 系统调用是操作系统提供的一组功能接口,用于访问底层系统资源和执行核心操作。通过系统调用,应用程序可以请求操作系统执行诸如文件操作、进程管理、网络通信等底层操作。系统调用通常以较低的级别提供对系统资源的访问,因此在执行时需要切换到内核模式。 库函数是由编程语言或开发库提供的一组函数,用于封装常用的功能和算法。库函数通常以较高的级别提供对系统资源的访问,隐藏了底层实现的细节,并提供了更方便和易用的接口供应用程序调用库函数可以在用户空间直接执行,无需切换到内核模式。 区别: 1. 调用方式:系统调用需要通过特定的指令或中断来触发,而库函数可以直接通过函数调用来使用。 2. 权限:系统调用在内核模式下执行,可以访问更底层的系统资源,而库函数在用户空间执行,受到操作系统权限的限制。 3. 性能:由于涉及到用户态和内核态之间的切换,系统调用的开销通常比库函数大。库函数由于在用户空间执行,没有这种切换开销。 4. 功能:系统调用提供了更底层的系统功能和资源访问,而库函数提供了更高层次的功能封装和抽象。 总的来说,系统调用适用于需要直接访问底层系统资源的场景,而库函数适用于常见功能的封装和提供更高层次的接口的场景。在实际开发中,根据具体需求选择合适的调用方式可以提高程序的性能和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值