
进程及高并发
进程及高并发
小馋喵星人
这个作者很懒,什么都没留下…
展开
-
Linux进程的管理与调度(七)--- Linux下1号进程的前世(kernel_init)今生(init进程)
Linux进程的管理与调度(六)--- Linux下1号进程的前世(kernel_init)今生(init进程)init 进程 - 1号进程kernel_initinit 进程关于 init 程序附录kernel_init_freeable流程分析kernel_init分析Linux 下有3 个特殊的进程,idle进程(PID=0)(PID = 0)(PID=0),init进程(PID=1)(PID = 1)(PID=1) 和 kthreadd进程(PID=2)(PID = 2)(PID=2)。i转载 2020-12-01 16:21:32 · 570 阅读 · 0 评论 -
Linux进程的管理与调度(六)--- Linux下0号进程换前世(init_task进程)今生(idle进程)
Linux进程的管理与调度(六)--- Linux下0号进程换前世(init_task进程)今生(idle进程)一、Idle 的创建1.1 0号进程上下文信息 --- init_task描述符1.2 进程堆栈 init_thread_union1.3 进程内存空间二、0号进程的演化2.1 rest_init 创建 init 进程(PID =1)和 kthreadd 进程(PID=2)2.2 创建kernel_init2.3 创建kthreadd2.4 0号进程演变为idle三、idle的运行与调度3.1 i转载 2020-08-17 15:19:30 · 646 阅读 · 0 评论 -
Linux进程的管理与调度(五)--- Linux下的进程类别(内核线程、轻量级进程和用户进程)以及其创建方式
Linux进程的管理与调度(五)--- Linux下的进程类别(内核线程、轻量级进程和用户进程)以及其创建方式一、Linux进程类别1.1 进程与线程1.2 内核线程二、linux进程的创建流程2.1 进程的复制fork和加载execve2.2 写时复制技术三、不同操作系统线程的实现机制3.1 专门线程支持的系统-LWP机制3.2 Linux下线程的实现机制3.3 实现机制的区别3.4 内核线程3.5 内核线程与普通进程的异同3.6 内核线程创建3.6.1 kernel_thread3.6.2 kthrea转载 2020-08-14 10:46:11 · 333 阅读 · 0 评论 -
Linux进程的管理与调度(四)--- 内核线程、轻量级进程、用户线程三种线程概念解惑(线程≠轻量级进程)
一、线程与进程概念在现代操作系统中,进程支持多线程。进程是资源管理的最小单元。线程是程序执行的最小单元。即线程作为调度和分配的基本单位,进程作为资源分配的单位。一个进程的组成实体可以分为两大部分:线程集和资源集。进程中的线程是动态的对象;代表了进程指令的执行。资源,包括地址空间、打开的文件、用户信息等,由进程内的线程节享。二、线程概念的产生2.1 传统单线程进程的缺点现实中有很多需要并发处理的任务,如数据库的服务端、网络服务器、大容量计算等。传统的UNIX进程是单线程的,单线程转载 2020-08-14 10:02:28 · 598 阅读 · 0 评论 -
Linux进程的管理与调度(三)--- Linux进程ID号
Linux进程的管理与调度(三)--- Linux进程ID号一、进程ID概述1.1 进程ID类型(1) PID 内核唯一区分每个进程的标识Linux 内核使用 task_struct 数据结构来关联所有与进程有关的数据和结构,Linux 内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内核中最重要的数据结构之一。该数据结构在内核文件include/linux/sched.h中定义,本篇文章只关注该数据结构如何来组织和管理进程ID的。一、进程ID概述1.1 进程ID类型要想了解内转载 2020-08-13 17:16:16 · 907 阅读 · 0 评论 -
Linux进程的管理与调度(二)--- Linux的命名空间 namespace 详解
Linux进程的管理与调度(二)--- Linux的命名空间 namespaces 详解Linux NameSpaces 机制提供了一种资源隔离方案。PID,IPC,Network 等系统资源不再是全局性的,而是属于特定的Namespace,每个Namespace 里面的资源对其他的Namespace 都是透明的。要创建新的 Namespace,只需要在调用 clone 时指定相应的flag。Linux Namespace 机制为实现基于容器的虚拟化技术提供了很好的基础,LXC(Linux C转载 2020-08-11 15:37:28 · 1530 阅读 · 0 评论 -
Linux进程的管理与调度(一)--- Linux进程描述符task_struct结构体详解
Linux进程的管理与调度(一)--- Linux进程描述符task_struct结构体详解一、进程状态1.1 五个进程状态1.2 两个终止状态1.3 睡眠状态1.3.1 内核如何将进程置为睡眠状态1.3.2 新的睡眠状态 TASK_KILLABLE1.3.2.1 使用TASK_KILLABLE的新内核 API1.3.2.2 完成机制二、进程标识符(PID)三、进程内核栈3.1 内核栈与线程描述符3.2 内核栈数据结构描述thread_info和thread_union3.3 获取当前在CPU上正在运行进程转载 2020-08-10 17:05:13 · 730 阅读 · 0 评论 -
处理机调度算法详解----进程调度
处理机调度算法详解----进程调度一、轮转调度算法二、优先级调度算法进程调度调度的对象是进程,其主要任务是根据某种算法,选取处于就绪队列中的进程,并由分派程序将处理机分配给被选中的进程。进程调度是一种最基本的调度,在多道批处理、分时和实时等OS中,都必须要配置这级调度。其执行周期最短,也就是执行频率最高,分时系统中10-100ms便要进行一次进程调度,因此也称为短程调度。因为执行频率高,进程调度算法不宜过于复杂(太过复杂会占用太多CPU的时间)下面我们一起来看下进程调度的几种调度算法:一、轮转载 2020-07-22 11:29:24 · 1730 阅读 · 2 评论 -
处理机调度算法详解----作业调度
处理机调度算法详解----作业调度一、先来先服务(FCFS)调度算法二、短作业优先(SJF)调度算法三、高响应比优先(HRRN)调度算法四、例子 作业调度调度的对象是作业,作业在概念上和程序还是有些区别的,作业是处于外存中的,也就是在后备队列上的,作业调度的任务就是从外存的后备对列选取某些作业调入内存,并为他们创建进程、分配必要的资源,也只有作业被调入到内存中,并为之分配资源,才能完成进程的创建工作,OS才可以进行其他的调度。作业调度其执行周期较长,大约几分钟一次,因此也称为长程调度。下面我们转载 2020-07-22 10:43:30 · 2213 阅读 · 0 评论 -
OS处理机调度算法----理论篇
OS处理机调度算法----理论篇一、处理机调度中的一些概念二、处理机调度的层次三、处理机调度算法的目标四、作业调度五、进程调度六、内存调度(对换技术)在传统的操作系统中(OS 为单处理机),处理机的分配和运行都是以进程为单位的,因而处理机的管理可归结为对进程的管理。处理机管理的功能主要包含:进程控制,进程同步,进程通信,调度。下南我们一个个的来分析其功能的具本含义:进程控制进程控制是处理机管理中最基本的功能,主要包含为调入内存中的作业创建进程,终止已完成的进程,将因发生等待事件无法继续转载 2020-07-21 16:24:04 · 791 阅读 · 0 评论 -
经典的进程同步问题-----读者-写者问题详解
经典的进程同步问题-----读者-写者问题详解一、问题描述二、问题分析三、使用记录型信号量解决读者-写者问题四、使用信号量解决读者-写者问题五、测试读者-写者问题是指保证一个Writer进程必须与其他进程互斥地访问共享对象的同步问题。也因为其问题较为复杂,其进程被用来测试新的同步原语,因此,本文对读者-写者问题来进行分析。一、问题描述一个数据文件或者记录可以被多个进程共享,我们把只要求读文件的进程称为“Reader” 进程,其他进程则称为“Writer” 进程。允许多个进程同时读一个共享对象转载 2020-07-21 14:38:44 · 1646 阅读 · 1 评论 -
经典的进程同步问题-----哲学家进餐问题详解
经典的进程同步问题-----哲学家进餐问题详解一、问题描述二、问题分析三、 一个错误的例子四、 方法一:允许最多四位哲学家拿左边的筷子五、 方法二:使用AND型信号量,同时判断左右的筷子六、 方法三:奇数拿左边筷子,偶数拿右边筷子七、 测试一、问题描述有五个哲学家围在一张圆桌,分别坐在周围的五张椅子上,在圆上有五个碗和木质筷子,他们的生活方式是交替的进行思考和进餐。平时,一个哲学家进行思考,,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐完毕后,放下筷子继续思考。我们可以转载 2020-07-21 11:07:40 · 2121 阅读 · 0 评论 -
经典的进程同步问题-----生产者-消费者问题详解
经典的进程同步问题-----生产者-消费者问题详解一、问题描述二、问题分析三、信号量设置四、记录型信号量解决生产者-消费者问题五、使用AND型信号量解决生产者-消费者问题六、使用信号量集解决生产者-消费者问题七、使用管程解决生产者-消费者问题进程同步问题是一个非常重要且相当有趣的问题,因而吸引了很多学者对他进行研究。本文就选取其中较为代表性的生产者-消费者问题来进行学习,以帮助我们更好的理解进程同步的概念及实现方法。一、问题描述有一群生产者进程在生产产品,并将这些产品提供给消费者进程进行消费。转载 2020-07-20 16:41:32 · 4241 阅读 · 2 评论 -
【进程间通信】信号量机制实现实例
一、 函数介绍semget() 函数它的作用是创建一个新信号量或取得一个已有信号量,原型为:#include <sys/sem.h>int semget(key_t key, int num_sems, int sem_flags);第一个参数key:相当于一个标识符,一般由ftok函数来产生。第二个参数:num_sems指定需要的信号量数目,它的值几乎总是1第三个参数sem_flags:是一组标志,当想要当信号量不存在时创建一个新的信号量,可以和值IPC_CREAT做转载 2020-07-20 11:08:44 · 563 阅读 · 4 评论 -
进程通信方式总结与盘点
进程通信方式总结与盘点一、共享存储器系统1. 基于共享数据结构的通信方式2. 基于共享数据区的通信方式二、管道(pipi)通信系统1. 无名管道2. 命名管道(FIFO)三、消息传递系统进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。首先回顾下我们前面讲的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一转载 2020-07-16 18:01:33 · 639 阅读 · 0 评论 -
操作系统进程状态和状态转换详解
之前的有博文对进程和线程的区别进行了详细的介绍,并且引入进程的目的是为了能够使程序并发的执行,并且可以对并发执行的程序加以描述和控制。这篇博文,我们就来对进程的状态转换来进行详细的分析下。注意:本博文中进程均是在传统操作系统中的进程,即 OS是进行资源分配的基本单位,也是OS 进行调度的一个独立单位。在开始之前,我们对进程和程序来进行一个对比:程序是静态的,而进程是动态的。程序可以作为一种软件资源长期存在,而进程是有一定生命周期的。程序是永久的,进程是暂时的。进程更能真实地描述并发,而程序不能转载 2020-07-16 16:11:19 · 3115 阅读 · 0 评论 -
进程和线程的区别
进程和线程的区别一、进程二、线程三、进程和线程的区别一、进程1945年第一台计算机出现的时候,那个时候还不存在操作系统,计算机的运行是需要人工的方式通过纸带将程序和数据输入到内存中,然后计算机才可以执行程序;后面为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,出现了脱机输入/输出方式,通过外围机来控制程序和数据的输入和运算结果的输出;为了实现对作业的连续处理,发展到单道批处理系统,他可以将一批作业以脱机方式输入到外存中,并且配上监督程序(Monitor),来控制作业的连续执行;然后转载 2020-07-15 15:58:40 · 551 阅读 · 1 评论 -
进程同步机制(软件同步,硬件同步,信号量,管程)
进程同步机制一、进程同步的几个重要概念二、软件同步机制2.1 双标志位法三、硬件同步机制3.1 关中断3.2 测试并建立(Test-and-Set,TS)指令3.3 对换指令四、信号量机制4.1 整型信号量4.2 记录型信号量4.3 AND型信号量4.4 信号量集五、管程机制进程的同步机制包含软件同步机制、硬件同步机制、信号量机制等,也就是这些机制,可以保证程序并发执行时的可再现性,在介绍之前,我们先来看下几个概念:一、进程同步的几个重要概念进程同步机制的主要任务,是对多个相关的进程在执行次序上进转载 2020-07-14 17:46:24 · 8395 阅读 · 1 评论