首页 > 其他分享 >信息安全系统设计与实现学习笔记9

信息安全系统设计与实现学习笔记9

时间:2023-11-12 14:11:06浏览次数:32  
标签:int 信息安全 笔记 学习 中断 信号 act 进程 include

学习笔记 9

一、知识点归纳以及自己最有收获的内容

1. 信号和信号处理

进程的概念

  • 一个“进程”是一系列活动,包括从事日常事物的人、在用户模式或内核模式下运行的Unix/Linux进程以及执行机器指令的CPU。

中断

  • 中断可分为三类:来自硬件的中断、来自其他人的中断、自己造成的中断。
  • 人员中断可根据紧急程度分为不可屏蔽(NMI)和可屏蔽。
  • 进程中断分为来自硬件、其他进程、自己造成的中断。
  • 硬件中断可来自硬件、其他处理器、进程的陷阱错误。

进程的陷阱错误

  • 进程可能自己造成中断,由CPU识别为异常的错误引起,如除以0、无效地址等。
  • 进程遇到异常时会陷入操作系统内核,将陷阱原因转换为信号编号,并将信号发送给自己。
  • 如果在用户模式下发生异常,则进程的默认操作是终止,可选地进行内存转储进行调试。
  • 如果在内核模式下发生陷阱,原因可能是硬件错误或内核代码中的漏洞,这时内核无法处理。

2. Unix/Linux中的信号处理

信号类型

  • Unix/Linux支持31种不同的信号,每种信号在signal.h文件中都有定义,每种信号都有一个符号名。

信号来源

  • 来自硬件的中断信号,来自异常的信号,来自其他进程的信号。

信号处理步骤

  1. 当某进程处于内核模式时,会检查信号并处理未完成的信号。
  2. 重置用户安装的信号捕捉函数,用于处理用户代码中的陷阱错误。
  3. 信号和唤醒:在Unix/Linux内核中有两种SLEEP进程:深度休眠进程和浅度休眠进程。

二、实践内容与截图

实践1

  • 运行以下代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <setjmp.h>
#include <string.h>

jmp_buf env;
int count = 0;

void handler(int sig, siginfo_t *siginfo, void *context)
{
    printf("handler: sig=%d from PID=%d UID=%d count=%d\n",
           sig, siginfo->si_pid, siginfo->si_uid, ++count);
    if (count >= 4) // let it occur up to 4 times
        longjmp(env, 1234);
}

int BAD()
{
    int *ip = 0;
    printf("in BAD(): try to dereference NULL pointer\n");
    *ip = 123; // dereference a NULL pointer
    printf("should not see this line\n");
}

int main(int argc, char *argv[])
{
    int r;
    struct sigaction act;
    memset(&act, 0, sizeof(act));
    act.sa_sigaction = &handler;
    act.sa_flags = SA_SIGINFO;
    sigaction(SIGSEGV, &act, NULL);

    if ((r = setjmp(env)) == 0)
        BAD();
    else
        printf("proc %d survived SEGMENTATION FAULT: r=%d\n", getpid(), r);

    printf("proc %d looping\n", getpid());
    while (1)
        ;
}

标签:int,信息安全,笔记,学习,中断,信号,act,进程,include
From: https://www.cnblogs.com/gd1220/p/17827126.html

相关文章

  • 2023-2024-1 20211319《计算机基础与程序设计》第七周学习总结
    2023-2024-120211319《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07这个作业的目标<写上具体方面>作业正文......
  • 2023-2024-1 20231417 《计算机基础与程序设计》第七周学习总结
    2023-2024-120231417《计算机基础与程序设计》第七周学习总结 作业信息这个作业属于哪个课程<班级的链接>(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP)这个作业要求在哪里<作业要求的链接>(https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07)......
  • 数学微积分,学习笔记,等价无穷小的证明:(1+x)^a-1 ~ ax
    \(\lim_{x\to0}\frac{\sqrt[n]{1+x}-1}{\frac{x}{n}}=1\)的证明\[\lim_{x\to0}\frac{\sqrt[n]{1+x}-1}{\frac{x}{n}}=\lim_{x\to0}\frac{\left(1+x\right)^{\frac{1}{n}}-1}{\frac{x}{n}}=\lim_{x\to0}\frac{e^{x\frac{1}......
  • linux的学习2
    用户管理:id:显示用户以及所属群组的实际与有效ID1.useradd-m用户名(描述:-m自动创建这个用户的主目录/home/用户名)2.useradd-g组名用户名(描述:添加新用户到某个组)3.userdel-r用户名(描述:-r删除用户的时候将他的目录也一并删掉)4.usermod-g用户组用户名(描述:修改用......
  • 学习笔记9 第六章的自学归纳
    第六章信号和信号处理信号和中断信号:发送给进程的请求,将进程从正常执行转移到中断处理中断:从I/O设备或协处理器发送到CPU的外部请求,它将CPU从正常执行转移到中断处理Unix/Linux信号示例Ctrl+C:当前运行的进程终止。生成一个键盘硬件中断。键盘中断处理程序将"Ctrl+C......
  • 机器学习——循环神经网络
    隐状态 无隐状态的神经网络 有隐状态的循环神经网络循环神经网络(recurrentneuralnetworks,RNNs)是具有隐状态的神经网络。   基于循环神经网络的字符级语言模型 回想一下 8.3节中的语言模型,我们的目标是根据过去的和当前的词元预测下一个词元,因此我们将原始......
  • 2023-2024-1学期20232423《网络空间安全导论》第一周学习总结
    教材学习内容1.1信息时代与信息安全放眼全球,随着时代的发展,各国的信息技术都在不断地提高,而我国已然成为信息技术与产业大国。随着技术进步一起到来的还有信息安全的隐患:他国对我们虎视眈眈,计算机病毒在一轮又一轮的清除中不断病变,有害内容的泛滥以及信息站和网络战的开始。因......
  • 第九周学习笔记
    信号和信号处理信号和中断“中断”是从1/0设备或协处理器发送到CPU的外部请求,它将CPU从正常执行转移到中断处理。与发送给CPU的中断请求一样,“信号”是发送给进程的请求,将进程从正常执行转移到中断处理。在讨论信号和信号处理之前,我们先来回顾中断的概念和机制,这有助于正确看待......
  • 2023-2024-1 20231403 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里2023-2024-1计算机基础与程序设计第七周作业)这个作业的目标自学《计算机科学概论》第8章《C语言程序设计》第6章作业正文https://www.cnblogs.com/lsrmy/p/17......
  • 学期:2023-2024-1 学号:20231426 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里2022-2023-1计算机基础与程序设计作业这个作业的目标通过教材内容了解数组、子程序与参数作业正文https://www.cnblogs.com/hhaxx/p/17826871.html教材学习内容总结《计......