首页 > 其他分享 >学习笔记6

学习笔记6

时间:2023-10-21 13:33:33浏览次数:35  
标签:文件 进程同步 pipefd 笔记 学习 进程 多任务处理 txt

知识点归纳

多任务处理系统

多任务处理系统是一种计算机操作系统,可以同时执行多个任务或进程,从而提高计算机的效率和吞吐量。它允许用户在一个系统中运行多个程序,并且这些程序可以并行执行,互不干扰。

多任务处理系统有两种类型:协作型和抢占式。在协作型系统中,多个任务共享CPU的时间片,并且需要彼此合作以避免资源冲突。而在抢占式系统中,操作系统可以强制中断一个任务,并切换到另一个任务,以确保公平分配CPU时间。

多任务处理系统通过任务调度算法来确定执行哪个任务,并管理任务之间的切换。常见的调度算法包括先来先服务(FCFS)、最短作业优先(SJF)、轮转法和优先级调度。

多任务处理系统可以提高计算机的效率和资源利用率。它可以同时处理多个用户请求或任务,并且可以在后台运行一些系统进程,如网络服务、文件管理和打印任务等。同时,多任务处理系统还可以提供用户界面,允许用户在同一时间对多个应用程序进行操作。

但是,多任务处理系统也存在一些挑战和限制。例如,任务之间的切换可能会引入延迟,影响系统响应时间。而且,如果任务过多或任务执行时间过长,也可能会导致系统资源耗尽或性能下降。

总之,多任务处理系统是一种重要的计算机操作系统,它可以同时执行多个任务,并提高计算机的效率和吞吐量。

进程同步

进程同步是指多个进程之间在执行过程中需要相互协调和合作的一种机制。在并发环境中,多个进程或线程可以同时访问共享资源,导致数据不一致的问题,因此需要通过进程同步来避免竞态条件和数据冲突。

进程同步机制的目标是确保进程按照某种规定的次序访问共享资源,以保证共享资源的一致性和正确性。常见的进程同步问题有互斥、同步、死锁和饥饿等。

互斥是指在同一时间只允许一个进程访问共享资源,其他进程需要等待。常见的互斥机制有使用互斥锁、信号量和临界区等。

同步是指多个进程需要在某个点上进行协调,例如等待其他进程的某个事件发生后再执行。常见的同步机制有使用条件变量、信号量和屏障等。

死锁是指两个或多个进程因为互相持有对方所需的资源而陷入无法继续执行的状态。常见的避免死锁的方法有资源有序分配法、银行家算法和死锁检测与恢复等。

饥饿是指某个进程一直无法获取所需的资源,导致一直等待无法执行。常见的避免饥饿的方法有公平的资源分配和优先级策略等。

进程同步是操作系统设计和并发编程中的重要问题,合理的进程同步机制可以保证共享资源的正确访问,提高系统的并发性和性能。同时,错误的进程同步机制可能导致数据不一致、死锁和性能下降等问题。因此,在多任务处理系统中,进程同步是一个需要仔细考虑和设计的关键问题。

I/O重定向
I/O重定向是指将进程的输入或输出从默认的标准输入(stdin)和标准输出(stdout)改变为其他的文件或设备。通过I/O重定向,可以将程序的输入和输出流与终端之外的其他文件、设备或进程连接起来。

在Unix/Linux和类Unix操作系统中,可以使用特定的符号来进行I/O重定向。常见的符号包括:

  • > :将标准输出重定向到指定文件中。例如,command > output.txt 将命令 command 的输出写入到 output.txt 文件中,如果文件不存在则创建一个新文件,并清空原有内容。
  • >> :类似于 >,但是将输出追加到指定文件的末尾。例如,command >> output.txt 将命令 command 的输出追加到 output.txt 文件末尾。
  • < :将指定文件的内容作为标准输入。例如,command < input.txtinput.txt 文件的内容作为 command 的输入。
  • 2> :将标准错误重定向到指定文件。例如,command 2> error.txt 将命令 command 的错误输出写入到 error.txt 文件中。
  • | :管道符号,将一个命令的输出连续传递给另一个命令的输入。例如,command1 | command2command1 的输出作为 command2 的输入。

通过使用I/O重定向,可以实现很多功能,如将程序的输出写入文件、将程序的输入读取自文件、将多个命令串联起来实现复杂的操作等。同时,I/O重定向还可以用于进程间通信和重定向到网络套接字等。

总之,I/O重定向是一种重要的技术,用于改变程序的输入和输出,使之与文件、设备或其他进程连接起来,提供了更灵活和强大的操作能力。

实践过程







管道

点击查看代码
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main() {
    int pipefd[2];
    pid_t pid;
    char message[] = "Hello, child!";

    // 创建管道
    if (pipe(pipefd) == -1) {
        perror("Pipe creation failed");
        return 1;
    }

    // 创建子进程
    pid = fork();

    if (pid < 0) {
        perror("Fork failed");
        return 1;
    }

    if (pid == 0) {
        // 子进程中,关闭写入端,并从管道读取数据
        close(pipefd[1]);
        char buffer[100];
        read(pipefd[0], buffer, sizeof(buffer));
        printf("Child received: %s\n", buffer);
        close(pipefd[0]);
    } else {
        // 父进程中,关闭读取端,并向管道写入数据
        close(pipefd[0]);
        write(pipefd[1], message, sizeof(message));
        close(pipefd[1]);
    }

    return 0;
}

标签:文件,进程同步,pipefd,笔记,学习,进程,多任务处理,txt
From: https://www.cnblogs.com/qqhope666/p/17778847.html

相关文章

  • 2023-2024-1 20231317《计算机基础与程序设计》第四周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2023-2024-1计算机基础与程序设计第四周作业)这个作业的目标<《C语言程序设计第三章》>作业正文...本博客链接https://www.cnblogs.com/......
  • 2023-2024-1 20231404高伟光 《计算机基础与程序设计》第四周学习总结
    作业信息所属班级计算机基础与程序设计作业要求要求作业目标学习并总结课本,通过测试作业正文本博客教材学习内容总结1.学习了门与电路的相关知识,了解了相关运算与图解2.知道大多计算机为冯-诺伊曼体系3.学习了强转,了解计算机赋值逻辑和晕算符号教材学......
  • TCL脚本语言学习
    前言  TCL(ToolCommandLanguage)命令的格式是命令+字符串,第一个是命令,后面都是字符串,tcl的解释器(逐行执行)会根据命令去对后面的字符串进行相关操作。注释符号:#一、安装启动tcl命令行,以%开头sudoaptinstalltcl//安装tcltclsh//启动tcl%二、变量列表1、置换subtitutio......
  • Unix/Linux系统编程自学笔记-第三章:Unix/Linux进程管理
    Unix/Linux系统编程自学笔记-第三章:Unix/Linux进程管理1、概念介绍多任务处理计算机技术概念中的多任务处理指的是同时执行若干独立任务。无论是在多处理机系统还是单处理机系统都可以实现多任务处理。对于单处理机系统,多任务处理的实现依靠着多路复用技术,通过上下文的快速......
  • MySQL学习(7)连接的原理
    什么是连接连接就是把各个表中的记录都取出来进行依次匹配。若无过滤条件,连接查询的结果集中包含一个表中的每一条记录与另一个表中的每一条记录相互匹配的组合,这样的结果集称为笛卡尔积。测试数据:CREATETABLEt1(m1INT,n1char(1));CREATETABLEt2(m2INT,n2char(1));......
  • cpp笔记
    cpp笔记请见:​ 序言现代C++教程:高速上手C++11/14/17/20-ModernC++Tutorial:C++11/14/17/20OntheFly(changkun.de)1.指针常量和常量指针1.指针常量:不能修改指针所指向的地址。定义同时必须初始化。inta=10;int*constp=&a; //指针常量*p=1; //正......
  • Markdwon学习
    Markdwon学习二级标题三级标题超链接 点击跳转博客网列表aaa表格姓名性别生日张三男1999.3.229   代码​ ......
  • 【无监督机器学习】9.推荐系统
    推荐系统推荐系统的定义推荐系统是利用用户产生的行为数据,对用户的兴趣进行建模,从而给用户推荐可能感兴趣的物品。推荐系统的应用电商网站新闻网站流媒体平台协同过滤协同过滤是一种基于用户行为的推荐算法,它的基本思想是利用用户的历史行为数据,计算用户之间的相似度,然......
  • java基础漏洞学习----基础命令执行漏洞
    java基础漏洞学习----基础命令执行漏洞基础命令执行常见方法1.ProcessBuilderpackagecom.example.servletdemo;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjavax.servlet.ServletException;importjavax.servl......
  • 学习笔记6
    教材第三章知识点总结Unix/Linux进程管理:多任务处理:多任务处理是指操作系统同时运行多个进程或线程的能力。操作系统通过时间片轮转或优先级调度等算法来实现多任务处理。多任务处理可以提高系统的资源利用率和响应速度。进程的概念理解:进程是程序的执行实例,是操作......