首页 > 其他分享 >《信息安全系统设计与实现》第七周学习笔记

《信息安全系统设计与实现》第七周学习笔记

时间:2023-10-22 19:23:29浏览次数:32  
标签:第七 int 信息安全 pid 笔记 终止 exit 进程 PROC


一、课程内容第十一章学习

1、多任务处理

指的是同时进行几项独立活动的能力
逻辑并行性称为“并发”

2、进程

操作系统是一个多任务处系统在操作系统中,任务也称为进程。
在第2章中,我们把执行映像定义为包含执行代码、数据和堆栈的存储区。

定义一个PROC结构体:

next:指向下一个PROC结构体的指针
ksp:保存的堆栈指针
pid:一个进程的进程编号
status:是当前状态
priority:进程调度优先级
kstack:进程执行时的堆栈

3、多任务处理系统

1、type.h文件
文件定义了系统常熟和表示进程的简单PROC结构体

#define FREE 0
#define READY 1
#define SLEEP 2
#define ZOMBIE 3
typedef struct proc
{ 
   struct proc *next;
   int *ksp;
   int pid;
   int ppid;
   int status;
   int priority;
   int kstack[SSIZE];
}

2 ts.s文件
在32位GCC汇编代码中可实现进程上下文切换

3 queue.c文件
可实现队列和链表操作

4、进程同步

一个操作系统包含许多并发进程,这些进程可以彼此交互。
进程同步是指控制和协调进程交互以确保其正确执行所需的各项规则和机制。最简单的进程同步工具是休眠和唤醒操作。

1 休眠状态
当某进程需要某些当前没有的东西时,例如申请独占一个存储区域、等待用户通过标准输入来输人字符等,它就会在某个事件值上进入休眠状态
为实现休眠操作,我们可在PROC结构体中添加一个event字段,并实现 ksleep(intevent)函数使进程进入休眠状态。

2 唤醒
唤醒正处于休眠状态等待该事件值的所有程序。如果没有任何程序休眠等待该程序,kwakeup0就不工作,即不执行任何操作。
kwakeup0的算法是:

进程终止

在操作系统中,进程可能终止或死亡,这是进程终止的通俗说法。
进程能以两种方式终止:
·正常终止:进程调用exit(value),发出 ext(value)系统调用来执行在操作系统内核中的 kexit(value)
·异常终止:进程因某个信号而异常终止。信号和信号处理将在后面第6章讨论在这两种情况下,当进程终止时,最终都会在操作系统内核中调用kexit()。
kexit0)的一般算法见下文。

5、进程家族树

通常,进程家族树通过个PROC结构中的一对子进程和兄弟进程指针以二叉树的形式实现,如:
PROC *child, wsibling, *parent;
其中,child 指向进程的第一个子进程,sibling指向同一个父进程的其他子进程。

二、代码实践

编译项目:

1、利用man和ls指令进行查询


2、等待和退出系统调用代码实践

代码

#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>

int main(void) {
    pid_t pid;

    // 创建子进程
    if ((pid = fork()) < 0) {
        // 出错处理
        perror("fork error");
    } else if (pid == 0) {
        // 子进程
        printf("Child process, pid %d\n", getpid());
        // 子进程退出
        exit(0);
    } else {
        // 父进程
        printf("Parent process, pid %d\n", getpid());
        // 等待子进程退出
        wait(NULL);
        // 结束当前进程
        printf("Parent process, pid %d, exit\n", getpid());
        exit(0);
    }

    return 0;
}

分析代码:
这里采用 fork() 函数创建了个子进程,再用 exit(0) 函数退出进程。
父进程中,等待子进程完成(wait(NULL))后调用了 exit(0) 结束进程。

三、苏格拉底问答



标签:第七,int,信息安全,pid,笔记,终止,exit,进程,PROC
From: https://www.cnblogs.com/ningxinyu1/p/17780884.html

相关文章

  • 第三章Unix/Linux进程管理—学习笔记六
    〇.本章思维导图1.最近刚好操作系统也学习到进程相关部分,因此再看这些知识更易懂了2.思维导图3.本章简介本章讨论了Unix/inux中的进程管理;阐述了多任务处理原则;介绍了进程概念;并以一个编程示例来说明多任务处理、上下文切换和进程处理的各种原则和方法。多任务处理系统......
  • 学习笔记6
    知识点总结多任务处理多任务处理是操作系统的一个关键特性,允许多个进程并发运行。多任务处理提供了更好的系统利用率,可以在同一时间内运行多个进程。多任务处理有助于提供更好的响应时间,允许用户交互并同时运行多个应用程序。进程进程是正在执行的程序的实例,包括程序......
  • 信息安全系统设计与实现第四章学习笔记
    一、知识点归纳1.并发计算导论在早期,大多数计算机只有一个处理组件,称为处理器或中央处理器(CPU)。受这种硬件条件的限制,计算机程序通常是为串行计算编写的。要求解某个问题,先要设计一种算法,描述如何一步步地解决问题,然后用计算机程序以串行指令流的形式实现该算法。在只有一个CPU......
  • 学习笔记6
    第三章Unix/Linux进程管理多任务处理多任务处理指的是同时进行几项独立活动的能力这种逻辑并行性称为“并发”多任务处理是所有操作系统的基础进程的概念进程是对映像的执行如下是一个非常简单的PROC结构体:next是指向下一个PROC结构体的指针ksp保存的堆栈指针pid是......
  • 第三章学习笔记
    第三章学习笔记一、Linux进程管理1.多任务处理在计算机技术中,多任务处理指的是同时执行几个独立的任务。在单处理器(单CPU)系统中,一次只能执行一个任务。多任务处理是通过在不同任务之间多路复用CPU的执行时间来实现的,即将CPU执行操作从一个任务切换到另一个任务。不同任务之......
  • Go笔记(3)-3种go语言的键盘输入详解
    go语言的键盘输入详解go语言中有三种输入函数,分别是:fmt.Scanf()可以按照指定的格式进行输入fmt.Scanln()通过指针将值赋值给变量fmt.Scan()(1)fmt.ScanScan从标准输入扫描文本,读取空白符分隔的值保存到传递给本函数的参数中,将换行符视为空白符使用......
  • 学习笔记6
    关于知识点知识点归纳第三章Unix/Linux进程管理3.1多任务处理一般来说,多任务处理指的是同时进行几项独立活动的能力。计算机科学中的多任务处理:操作系统:多任务处理是操作系统的核心功能之一,它允许多个程序在同一台计算机上并行运行,提高了资源利用率。多线程:多线程是在......
  • 学习笔记6
    知识点总结:多任务处理:多任务处理是操作系统的一个关键特性,它允许多个进程并发运行。操作系统的多任务处理提供了更好的系统利用率,因为它能够在同一时间内运行多个进程,而不仅仅是一个。多任务处理有助于提供更好的响应时间,因为它允许用户交互并同时运行多个应用程序。进程:......
  • Python第七课——函数
    记忆关键点:一、定义函数defgreet_user():"""显示简单的问候语"""print("hello!")greet_user()defgreet_user():"""显示简单的问候语"""print("hello!")greet_user()defgreet_user(username):......
  • yzy第六周学习笔记
    第六周学习笔记多任务处理在计算机技术中,多任务处理指的是同时执行几个独立的任务。在单处理器(单CPU)系统中,一次只能执行一个任务。多任务处理是通过在不同任务之间多路复用CPU的执行时间来实现的,即将CPU执行操作从一个任务切换到另一个任务。不同任务之间的执行切换机制称为上......