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

学习笔记6

时间:2023-10-22 20:55:05浏览次数:23  
标签:printf pid 笔记 学习 mutex pthread 进程 include

目录

学习笔记6

知识点归纳

第3章 Unix/linux进程管理

  • 多任务处理
    Unix/Linux操作系统支持多任务处理,即同时运行多个程序或任务。每个任务都是一个进程,独立运行,互不干扰。

  • 进程的概念:
    进程是操作系统中的一个程序执行实例。它包含了程序的代码和相关数据,以及程序执行时的各种状态信息。每个进程都是系统资源的一个独立单位,有自己的内存空间、文件描述符等。

  • 多任务处理系统:
    Unix/Linux系统是多任务处理系统的典型代表,它可以同时执行多个进程。系统通过进程调度算法来分时使用CPU资源,实现多个进程的并发执行。

  • 进程同步:
    进程同步是指控制多个进程之间的执行顺序,以避免竞争条件(Race Condition)和数据不一致等问题。常用的同步机制包括互斥锁、信号量、条件变量等,用于确保进程的有序执行和数据的一致性。

  • 进程终止:
    进程可以因为多种原因终止,包括正常退出、异常退出、被其他进程终止等。进程的终止会释放系统资源,包括内存、文件描述符等,确保系统的稳定性和资源的有效利用。

  • 创建进程:
    使用fork()系统调用在Unix/Linux系统中创建新的进程。父进程调用fork()后,会创建一个新的子进程,两者在不同的内存空间中运行。

#include <unistd.h>
#include <stdio.h>

int main() {
    pid_t pid;
    pid = fork();
    if (pid == 0) {
        // 子进程执行的代码
        printf("This is child process\n");
    } else {
        // 父进程执行的代码
        printf("This is parent process\n");
    }
    return 0;
}
  • 等待子进程结束
    使用wait()系统调用,父进程可以等待子进程的结束,防止子进程成为僵尸进程(Zombie Process)。
#include <sys/wait.h>
#include <stdio.h>
#include <unistd.h>

int main() {
    pid_t pid;
    int status;

    pid = fork();

    if (pid == 0) {
        // 子进程执行的代码
        printf("This is child process\n");
    } else {
        // 父进程等待子进程结束
        wait(&status);
        printf("Child process has terminated\n");
    }

    return 0;
}

  • 进程同步 - 互斥锁:
    使用互斥锁来保护共享资源,确保在同一时刻只有一个进程可以访问共享资源。
#include <pthread.h>
#include <stdio.h>

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

void* thread_function(void* arg) {
    pthread_mutex_lock(&mutex);
    // 访问共享资源的代码
    pthread_mutex_unlock(&mutex);
    pthread_exit(NULL);
}

int main() {
    pthread_t thread;
    pthread_create(&thread, NULL, thread_function, NULL);
    pthread_join(thread, NULL);
    return 0;
}

苏格拉底挑战


问题与解决方案

问题:可能遇到僵尸进程。
解决方案:在创建子进程后,使用wait()或waitpid()函数等待子进程的结束。这样,父进程会等待子进程结束并回收其资源,防止子进程变成僵尸进程。

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

int main() {
    pid_t pid;
    int status;

    pid = fork();

    if (pid == 0) {
        // 子进程执行的代码
        printf("This is child process\n");
    } else {
        // 父进程等待子进程结束
        waitpid(pid, &status, 0);
        printf("Child process has terminated\n");
    }

    return 0;
}

问题:处理进程之间的同步和互斥问题
解决方案:使用互斥锁(Mutex)等同步机制来保护共享资源,确保在同一时刻只有一个进程可以访问共享资源。

标签:printf,pid,笔记,学习,mutex,pthread,进程,include
From: https://www.cnblogs.com/lizhuotong/p/17781107.html

相关文章

  • Python学习笔记(一)
    Python中一切皆对象,函数和类也是对象,属于Python的一等公民。对象可以赋值给一个变量对象可以添加到集合对象中对象可以作为参数传递给函数对象可以当做函数的返回值对象的三个特征:1、身份(id());2、类型;3、值type->int>1type>class->objobject是最顶层基类type也是一个......
  • 学习笔记6
    一、任务详情自学教材第3章,提交学习笔记(10分),评分标准如下知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题”核心是要求GPT:“......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》 第七周学习总结
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 20211314王艺达学习笔记6
    Unix/Linux进程管理进程是Unix操作系统抽象概念中最基本的一种。进程管理是所有操作系统的心脏所在。一、进程进程是处于执行期的程序。除了可执行程序代码,还包括打开的文件、挂起的信号、内核内部数据、一个或者多个执行线程等多种资源线程是在进程活动中的对象;内核调度的......
  • 2023-2024-1 20231405 《计算机基础与程序设计》第四周学习总结
    2023-2024-120231405《计算机基础与程序设计》第四周学习总结作业信息作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP作业要求在哪里https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/13009作业的目标自学《计算机科......
  • 2023-2024-1 20211211 第三章学习笔记
    一、多任务处理多任务处理指的是同时进行几个独立活动的能力在单处理器(单CPU)系统中,一次只能执行一个任务。而多任务处理是通过在不同任务之间多路复用CPU的执行时间来实现的,即将CPU执行操作从一个任务切换到另一个任务。不同任务之间的执行切换机制称为上下文切换,将一个任务的......
  • 《信息安全系统设计与实现》第七周学习笔记
    一、课程内容第十一章学习1、多任务处理指的是同时进行几项独立活动的能力逻辑并行性称为“并发”2、进程操作系统是一个多任务处系统在操作系统中,任务也称为进程。在第2章中,我们把执行映像定义为包含执行代码、数据和堆栈的存储区。定义一个PROC结构体:next:指向下一个P......
  • 第三章Unix/Linux进程管理—学习笔记六
    〇.本章思维导图1.最近刚好操作系统也学习到进程相关部分,因此再看这些知识更易懂了2.思维导图3.本章简介本章讨论了Unix/inux中的进程管理;阐述了多任务处理原则;介绍了进程概念;并以一个编程示例来说明多任务处理、上下文切换和进程处理的各种原则和方法。多任务处理系统......
  • 2023-2024-1 20231302 《计算机基础与程序设计》第4周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第4周作业这个作业的目标门电路,组合电路,逻辑电路,冯诺依曼结构,CPU,内存,IO管理,嵌入式系统,并行结构,物理安全作业正文https://www.cnblogs.com/9q2......
  • 学习笔记6
    知识点总结多任务处理多任务处理是操作系统的一个关键特性,允许多个进程并发运行。多任务处理提供了更好的系统利用率,可以在同一时间内运行多个进程。多任务处理有助于提供更好的响应时间,允许用户交互并同时运行多个应用程序。进程进程是正在执行的程序的实例,包括程序......