首页 > 系统相关 >Linux系统编程 第3章学习笔记

Linux系统编程 第3章学习笔记

时间:2022-10-19 10:48:20浏览次数:48  
标签:操作系统 编程 系统 用户 笔记 sh Linux 进程 执行

Unix/Linux进程管理

多任务处理:

在单处理器(单CPU)系统 中.一次只能执行一个任务-多任务处理是通过在不同任务之间多路复用CPU的执行时间 来实现的,即将CPU执行操作从一个任务切换到另一个任务。

多任务处理是所有操作系统的基础总体上说,它也是并行编程的基础。

 

进程的概念

操作系统是1个多任务处理系统。在操作系统中,任务也称为进程。

进程是对映像的执行

在操作系统内核中,每个进程用1个独特的数据结构表示,叫作进程控制块(PCB)或任务控制块(TCR)等。书中成称为PROC结构体

一个简单的PROC结构体来表示进程

 

 

 

 

多任务处理系统(简称MT)

组成:

①type.h文件

定义了系统常数和表示进程的简单PROC结构体

②ts.s文件

在32位GCC汇编代码中可实现进程上下文切换

③queue.c文件

实现队列和链表操作函数

④t.c文件

定义MT系统数据结构、系统初始化代码和进程管理函数

⑤多任务处理系统代码介绍

 

进程同步

睡眠模式:

当某进程需要某些当前没有的东西时,例如申请独占一个存储区域、等待用户通过标准输入来输入字符等,它就会在某个事件值上进入休眠状态

唤醒操作

多个进程可能会进入休眠状态等待同一个事件,这是很自然的,因为这些进程可能都需要同一个资源,例如一台当前正处于繁忙状态的打印机。在这种情况下,所有这些进程都将休眠等待同一个事件值。当某个等待时间发生时,另一个执行实体(可能是某个进程或中断处理程序)将会调用kwakeup(event),唤醒正处于休眠状态等待该事件值的所有程序。如果没有任何程序休眠等待该程序,kwakeup。就不工作,即不执行任何操作。

 

进程终止

·正常终止:进程调用exit(value),发出_exit(value)系统调用来执行在操作系统内核中的kexit(value),这就是我们本节要讨论的情况。

·异常终止:进程因某个信号而异常终止。

 

 Unix/Linux 中的进程

进程来源:

当操作系统启动时,操作系统内核的启动代码会强行创建一个PID=0的初始进程,即通过分配PROC结构体(通常是proc[0])进行创建,初始化PROC内容,并让运行指向 proc[0]o然后,系统执行初始进程P0。大多数操作系统都以这种方式开始运行第一个进程。 P0继续初始化系统,包括系统硬件和内核数据结构。然后,它挂载一个根文件系统,使系统可以使用文件。在初始化系统之后,P0复刻出一个子进程P1,并把进程切换为以用户模 式运行P"

INIT和守护进程:

当进程P1开始运行时,它将其执行映像更改为IN1T程序。因此,P1通常被称为INIT 进程,因为它的执行映像是init程序。P1开始复刻出许多子进程。P1的大部分子进程都是 用来提供系统服务的。它们在后台运行,不与任何用户交互。这样的进程称为守护进程。

登录进程:

除了守护进程之外,P1还复刻了许多LOGIN进程,每个终端上一个,用于用户登录。

sh进程:

当用户成功登录时,LOGIN进程会获取用户的gid和uid,从而成为用户的进程、它将 目录更改为用户的主目录并执行列出的程序,通常是命令解释程序sh:现在,用户进程执行sh,因此用户进程通常称为sh进程。它提示用户执行命令。一些特殊命令,如cd(更改目录)、退出、注销等,由sh自己直接执行。其他大多数命令是各种bin目录(如/bin、/sbin、 /usr/bin , /usr/local/bin等)中的可执行文件。对于毎个(可执行文件)命令,sh会复刻一个子进程,并等待子进程终止。子进程将其执行映像更改为命令文件并执行命令程序。子进程 在终止时会唤醒父进程sh,父进程会收集子进程终止状态、释放子进程PROC结构体并提 示执行另一个命令等。除简单的命令之外,sh还支持I/O、重定向和通过管道连接的多个命令。

进程的执行模式:

在Unix/Linux中,进程以两种不同的模式执行,即内核模式和用户模式,简称Kmode 和Umode。在每种执行模式下,一个进程有一个执行映像。

 

 

 

进程管理的系统调用

fork():

创建子进程并返回子进程的pid,如果fork()失败则返回-1

进程的执行顺序:

在fork()完成后,子进程与父进程和系统中所有其他进程竞争CPU运行时间。接下来运行哪个进程取决于它们的调度优先级,优先级呈动态变化。

进程终止:正常/异常终止

等待子进程终止:

在任何时候,一个进程都可以使用

int pid = wait(int *status);

系统调用,等待僵尸子进程。如果成功,则wait()会返回僵尸子进程的PID,而且status 包含僵尸子进程的exitCodeo

I/O重定向

文件流和文件描述符

文件流I/O和系统调用

重定向标准输入

重定向标准输出

管道

管道是用于进程交换数据的单向进程间通信通道。

sh模拟器

 

 

 

 

 

 

 

 

标签:操作系统,编程,系统,用户,笔记,sh,Linux,进程,执行
From: https://www.cnblogs.com/s-j-y/p/16805373.html

相关文章

  • Linux系统编程 第4章学习笔记
    并发编程并行计算导论顺序算法与并行算法:   并行性与并发性:通常,并行算法只识别可并行执行的任务,但是它没有规定如何将任务映射到处理组件。在理想情况下,并行算......
  • Linux系统编程 第5章学习笔记
    定时器及时钟服务硬件定时器定时器是由时钟源和可编程计数器组成的硬件设备。 个人计算机定时器基于Intelx86的个人计算机有数个定时器(Bovet和Cesati2005)。实时......
  • Linux初识及常用命令
     持续更新中!!环境:contos7一、目录结构在linux系统中,一切皆文件目录说明/根目录,所有文件都在bin存放常用的程序文件(命令文件)boot存放引导系统启动的文件(boot配置文件,内核和其......
  • Linux下编写ENC28J60网卡驱动,完善网络设备框架
    一、框架模型linux下设备驱动都有一套标准的结构,字符设备,块设备,网络设备都是自己的一套框架。编写驱动只需要把内核的框架搞清楚,然后照着结构填入参数,注册进内核,在应用层就......
  • linux查看版本
    root@38fffa7c9485:/#uname-aLinux38fffa7c94853.10.0-1160.el7.x86_64#1SMPMonOct1916:18:59UTC2020x86_64GNU/Linuxroot@38fffa7c9485:/#root@38ff......
  • linux—— 使用gcc解析程序四个阶段
    (文章目录)一、gcc1.gcc的安装yum-yinstallgcc-c++autoconfpcrepcre-develmakeautomakeyum-yinstallwgethttpd-toolsvim2.gcc的默认使用[yzq@VM-8-8......
  • Linux学习-2
    虚拟机关键配置名词解释虚拟⽹络编辑器说明 桥接模式  可以访问互联⽹   配置的地址信息和物理主机⽹段地址信息相同,容易造成地址冲突   NAT模式 ......
  • 移动linux根目录的文件
    如果不小心执行了移动了根目录的文件到别的目录里面,当前会话已关闭咋恢复一、没关闭当前会话通过mv命令进行移动回来二、会话关闭如果买的是腾讯云的服务器或者......
  • Linux系统编程 第1、2章学习笔记
               ......
  • 熟悉编程语言
    熟悉编程语言最受欢迎的编程语言top50(参考链接:https://www.tiobe.com/tiobe-index/)Python2.C3.Java4.C++5.C#6.VisualBasic7.JavaScript8.Assemblylanguage9.S......