操作系统--进程管理

本文探讨了操作系统中的进程实体,包括进程的标识、状态、控制块(PCB)以及进程与线程的关系。阐述了进程的三种基本状态模型,并通过生产者-消费者问题说明了进程同步的必要性。同时,介绍了Linux环境下进程管理的基本概念,如前台与后台进程、进程ID以及进程状态标记。最后,提到了进程同步与线程同步的重要原则和方法,以及在Linux中使用的一些关键命令如`ps`和`top`。
摘要由CSDN通过智能技术生成

1.进程实体

1.1.为什么需要进程

image-20211006142750013 image-20211006142919524

1.2.进程的实体

1.2.1.主存中的进程形态

image-20211006143116440
  • 标识符:唯一标记一个进程,用于区别其他进程
  • 进程状态:标记进程的进程状态,如:运行态
  • 程序计数器:指向进程即将被执行的下一条指令的地址
  • 内存指针:程序代码,进程数据相关指针
  • 上下文数据:进程执行时处理器存储的数据
  • IO状态信息:被进程IO操作所占用的文件列表
  • 记账信息:使用处理器时间,时钟数总和等
image-20211006144058810

进程控制块(PCB)

image-20211006144200774 image-20211006144230015

1.2.1.进程与线程

image-20211006144355698 image-20211006144501513 image-20211006144615105 image-20211006144636755

操作系统对进程的调度实际上是对进程里线程的调度。

2.状态模型

image-20211006145949588

2.1.就绪状态

image-20211006150044347 image-20211006150119140

2.2.执行状态

image-20211006150300568

2.3.阻塞状态

image-20211006150441797 image-20211006150507338

2.4.创建状态

image-20211006150746160

2.5.终止状态

image-20211006150918561

2.6.进程间的切换

image-20211006150831681

3.进程同步

3.1.为什么需要进程间同步

生产者-消费者问题:

image-20211006151248210 image-20211006151408536 image-20211006151603686 image-20211006151722058 image-20211006152218526
#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <pthread.h>

#include <vector>


pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;


int num = 0;   //全局变量



void *producer(void*){

    int times = 10000000;

    while(times --){

        //pthread_mutex_lock(&mutex);

        num += 1;

        //pthread_mutex_unlock(&mutex);

    }

}


void *comsumer(void*){

    int times = 10000000;

    while(times --){

        //pthread_mutex_lock(&mutex); 

        num -= 1;

        //pthread_mutex_unlock(&mutex);

    }

}


int main(){

    printf("Start in main function.");

    pthread_t thread1, thread2;

    pthread_create(&thread1, NULL, &producer, NULL);

    pthread_create(&thread2, NULL, &comsumer, NULL);

    pthread_join(thread1, NULL);

    pthread_join(thread2, NULL);

    printf("Print in main function: num = %d\n", num);

    return 0;

}

结果不为0.

image-20211006154152791 image-20211006154319486 image-20211006154403529 image-20211006154545820 image-20211006155716366 image-20211006155755600

3.2.进程间同步的原则

临界资源:

image-20211006155841561

原则:

image-20211006155928617

进程间同步的方法

image-20211006160133156

3.3.线程同步

image-20211006160304822

线程同步的方法

image-20211006160349126

4.Linux的进程管理

4.1.Linux进程的相关概念

4.1.1.进程的类型

前台进程

终端shell

前台进程就是具有终端,可以和用户交互的进程

后台进程

与前台进程相对,没有占用终端的就是后台进程

后台程序基本上不和用户交互,优先级比前台进程低

需要执行的任务以&结束

守护进程

image-20211006213301336

4.1.2.进程标记

进程ID

image-20211006213438963 image-20211006213855752 image-20211006213918231

父子进程关系可以通过pstres命令查看

image-20211006214151853

进程的状态标记

image-20211006214214129 image-20211006214257142

4.2.操作Linux进程的命令

  • ps命令

    列出当前的进程状态

    ps -aux:打印详细信息

    ps -u root:查看root的进程

  • top

    用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。

  • kill

    image-20211006215324243
image-20211006215346723

操作系统概述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值