zoukankan      html  css  js  c++  java
  • 信息安全系统设计与实现第六周:《Unix/Linux系统编程》第三章学习笔记

    Unix/Linux进程管理

    多任务处理原则

    多任务处理

    • 通过不同任务之间多路复用CPU的执行时间来实现,即将CPU执行操作从一个任务切换到另一个任务;
    • 逻辑并行性称为“并发”;
    • 多任务处理是所有操作系统的基础,也是并行编程的基础。

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

    1.虚拟CPU;
    2.init():当MT系统启动时,main()函数调用init()函数以初始化系统;
    3.P0调用kfork()来创建优先级为1的子进程P1,并将其输入就绪队列中,然后P0调用tswitch(),将会切换任务以运行P1;
    4.tswitch():实现进程上下文切换

    SAVE函数:当正在执行的某个任务调用tswitch()时,会把返回地址保存在堆栈上,并在汇编代码中进入tswitch();
    scheduler():在执行了tswitch()中的SAVE函数后,任务调用scheduler()来选择下一个正在运行的任务;
    RESUME函数:当执行从scheduler()返回时,“运行”可能已经转而指向另一个任务的PROC;

    5.kfork():kfork()函数创建一个子任务并将其输入readyQueue中。

    进程

    概念

    • 进程是对映像的执行。

    多任务处理系统内的进程

    • 多任务处理系统支持动态进程创建、进程终止,以及通过休眠与唤醒实现进程同步、进程关系,以及以二叉树的形式实现进程家族树,从而允许父进程等待子进程终止。

    进程的执行模式

    • 内核模式Kmode
    • 用户模式Umode

    在Kmode模式下,通过将CPU的状态寄存器从K模式更改为U模式,可轻松切换至Umode;但Umode进程只能通过中断、陷阱、系统调用三种方式进入Kmode。

    进程管理的系统调用

    • fork
    • wait
    • exec
    • exit

    I/O重定向

    I/O重定向原则

    • 标准输入:如果用一个新打开的文件来替换文件描述符0,那么输入将来自该文件而不是原始输入设备。
    • 标准输出:更改文件描述符1,指向打开的文件名,然后stdout的输出将会转到该文件而不是屏幕;同样也可以将stderr重定向到一个文件。

    管道编程

  • 相关阅读:
    Python request
    Dockerfile详解
    k8s 英文文档翻译
    k8s 相关命令
    k8s 廖老师的分享
    Docker docker-compose安装
    Mysql 锁库与锁表
    Docker 二进制安装docker
    Java多线程的同步控制记录
    JAVA并行程序基础
  • 原文地址:https://www.cnblogs.com/ckx1212-20191308/p/15456019.html
Copyright © 2011-2022 走看看