[金三银四] 系统调用相关

简介: [金三银四] 系统调用相关

2.36 系统调用的详细流程

Linux 在x86上的系统调用通过 int 0x80 实现,用系统调用号来区分入口函数。操作系统实现系统调用的基本过程是:

  1. 应用程序调用库函数(API);
  2. API 将系统调用号存入寄存器(EAX),然后通过中断调用使系统进入内核态;
  3. 内核中的中断处理函数根据系统调用号,调用对应的内核函数(系统调用);
  4. 系统调用完成相应功能,将返回值存入寄存器(EAX),返回到中断处理函数;
  5. 中断处理函数返回到 API 中;
  6. API 将 EAX 返回给应用程序。


应用程序调用系统调用的过程是:

  1. 把系统调用的编号存入 EAX;
  2. 把函数参数存入其它通用寄存器;
  3. 触发 0x80 号中断(int 0x80)。

2.37 PCB 是什么

进程的PCB是系统感知进程的唯一实体。所以说到底,对进程进行操作,也可以理解为对PCB进行操作。
在创建进程的时候,就是分配一个PCB,里面记录了进程的各种信息,包含进程状态、程序计数器PC、CPU寄存器、内存管理信息等等,所以
PCB是要常驻内存的。


2.38 PCB的存在方式是怎样的呢

一般来说,系统把所有PCB组织在一起,并把他们放在内存的固定区域,构成PCB表。而在这个固定区域里,主要有链接和索引两种方式。


链接方式:把具有同一状态的PCB,链接成一个队列,这样可以形成若干就绪队列、阻塞队列和空白队列等,优先级高的进程的PCB排在前面。

索引方式:系统根据所有进程的状态建立几张索引表,如就绪索引表,阻塞索引表等,并把各索引表在内存的首地址记录在内存的一些专用单元中,在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址。


2.39 创建进程在操作系统来看的具体步骤是怎样的

  1. 创建PCB
  2. 赋予一个唯一的进程标识符pid
  3. 为新进程分配资源,为新进程的程序和数据以及用户栈分配必要的内存空间
  4. 初始化PCB(初始化标识信息,将系统分配的标识符和父进程标识符填入新的PCB中;初始化处理机状态息,使程序计数器指向程序的入口地址,使栈指针指向栈顶;初始化处理机控制信息,将进程的状态设置为就绪状态或静止就绪状态。)
  5. 将新进程插入到就绪队列

2.40 进程撤销的具体过程

  1. 根据被终止的进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
  2. 若被终止的进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。
  3. 若该进程还有子孙进程,还应将其子孙进程予以终止,以防他们成为不可控的进程。
  4. 将被终止的进程所拥有的全部资源,或者归还给其父进程,或者归还给操作系统。
  5. 将被终止的进程PCB从所在队列或链表中移出,等待其他程序来搜集信息。

2.41 Linux 进程生命周期中的系统调用有哪些

2.42 PV 操作

PV操作主要是进程间同步的信号量机制中的申请、释放资源的操作原语,执行过程不可中断。

P操作:也称为down()/wait()操作,使S=S-1,若S<0,进程暂停执行,放入信号量的等待队列。

V操作:也称为up()/signal()操作,使S=S+1,若S<=0,唤醒等待队列中的一个进程。

相关文章
|
存储 Linux 调度
Linux系统编程 多线程基础
Linux系统编程 多线程基础
66 1
|
安全 算法 Java
去某东面试遇到并发编程问题:如何安全地中断一个正在运行的线程
一个位5年的小伙伴去某东面试被一道并发编程的面试题给Pass了,说”如何中断一个正在运行中的线程?,这个问题很多工作2年的都知道,实在是有些遗憾。 今天,我给大家来分享一下我的回答。
98 0
|
6月前
|
存储 调度 C++
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
141 1
|
4月前
|
Linux API C语言
Linux源码阅读笔记02-进程原理及系统调用
Linux源码阅读笔记02-进程原理及系统调用
|
6月前
|
移动开发 程序员 Linux
老程序员分享:linux驱动开发笔记_ioctl函数
老程序员分享:linux驱动开发笔记_ioctl函数
|
7月前
|
存储 Linux 调度
[操作系统]秋招面试问到进程扩展知识!!!面试官喜欢的答案
[操作系统]秋招面试问到进程扩展知识!!!面试官喜欢的答案
|
7月前
|
算法 安全 调度
[操作系统] 面试宝典之~死锁连环系列
[操作系统] 面试宝典之~死锁连环系列
|
Unix Linux API
Linux内核分析与应用6-系统调用
Linux内核分析与应用6-系统调用
66 0
|
Linux
Linux内核分析与应用7-内核同步
Linux内核分析与应用7-内核同步
71 0
|
安全 Java Linux
讲讲用户态和内核态之间的爱恨情仇(面试篇)
讲讲用户态和内核态之间的爱恨情仇(面试篇)
176 0

热门文章

最新文章