首页 > 系统相关 >[Linux 高并发服务器] 进程概述

[Linux 高并发服务器] 进程概述

时间:2022-11-25 19:44:23浏览次数:45  
标签:程序 并发 内核 Linux 进程 服务器 执行 CPU 运行


[Linux 高并发服务器] 进程概述

程序和进程

程序

程序是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程

  • 二进制格式表示,用于描述可执行文件格式的元信息,内核利用此信息解释文件中的其他信息
  • 机器语言指令
  • 程序入口地址:标识程序开始执行时的起始指令位置
  • 数据:程序文件包含的变量初始值和程序使用的字面量值(字符串)
  • 符号表和重定位表,描述程序中函数和变量的位置以及名称。用来调试和运行时的符号解析(动态链接)
  • 共享库和动态链接信息
  • 其他信息也都是描述如何创建进程的

进程

  • 进程是正在运行的程序的实例。是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是操作系统动态执行的基本单元,在传统操作系统中也是基本的分配单元
  • 一个程序可以来创建多个进程,进程是有内核定义的抽象实体,并为该实体分配用以执行程序的各项系统资源。内核角度看,进程是由用户内存空间和一系列内核数据结构组成的

简单的说,程序就是文件是死的,进程就是程序执行时用来分配资源和执行程序的

单道多道程序设计

  • 单道程序设计,计算机内存中只允许一个程序的运行
  • 多道程序设计,在计算机中同时存放几道独立程序,在管理程序控制下相互穿插执行,共享计算机系统资源,提高了CPU的利用率
  • 对于一个单CPU系统来说,程序同时处于运行状态只是宏观上的概念,实际上任意时刻CPU上运行的程序只有一个
  • 多道程序设计模型中,多个进程轮流使用CPU。常见CPU为纳秒级别,1s执行约10亿条指令,几乎是同时运行。

时间片

又称:量子,处理器片
是操作系统分配给每个正在运行的进程微观上的一段CPU时间,时间片通常很短用户不会感觉到。时间片不能很长也不能很短,在Linux系统中为5ms~800ms。如果时间太短,频繁切换,中间的消耗的时间就太多了,浪费性能;如果时间太长,就能被感觉出来没有在“同时执行”。

时间片是有操作系统内核的调度程序分配给每个进程。内核先给每个进程分配相等的初始的时间片,每个进程轮流执行相应的时间,当所有进程都处于时间片耗尽的状态时,内核会重新为每个进程计算并分配时间片

并行和并发

并行:同一时刻,有多条指令在多个处理器上同时执行
并发:同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,宏观上同时执行,微观上并不是同时执行,只是把时间片分成若干段,使多个进程快速交替的执行

进程控制块PCB

又称进程描述符表
为了管理进程,内核必须对每个进程所作的事情进行清楚的描述。Linux的进程控制块是​​​task_struct​​​结构体
可以在下面这个路径里看​​​task_struct​​的定义,不过太多了就不贴了

/user/src/linux-headers-xxx/include/linux/sched.h

里面主要有这些内容

  • 进程id:系统每个进程有唯一id,用pid_t类型表示,就是一个非负整数
  • 进程的状态:就绪,运行,挂起,停止(后面会讲)
  • 进程切换是需要保存和回复的一些CPU寄存器
  • 描述虚拟地址空间的信息
  • 描述控制终端的信息
  • 当前工作目录(Current Working Directory)
  • umask 掩码
  • 文件描述符表,包含很多指向 file 结构体的指针
  • 和信号相关的信息
  • 用户 id 和组 id
  • 会话(Session)和进程组
  • 进程可以使用的资源上限(Resource Limit),​​ulimit -a​​​可以查看资源上限

    如果要修改的话可以使用​​​ulimit -s 具体数值​​​,这样的格式来修改,其中​​-s​​​是以​​stack size​​举例,如果改别的,那就使用对应的字母



标签:程序,并发,内核,Linux,进程,服务器,执行,CPU,运行
From: https://blog.51cto.com/u_15891800/5887526

相关文章

  • [Linux 高并发服务器]文件IO
    [Linux高并发服务器]文件IO此博客是根据牛客的项目课写的,使用了pdf里的资料​​​各位可以去牛客官网学习一下​​另外注意,本博客和牛客的教程以32位系统为例,如果记忆一些......
  • [Linux高并发服务器]模拟实现 ls -l 指令
    [Linux高并发服务器]模拟实现ls-l指令参考:​​牛客LINUX高并发服务器教程​​利用state函数模拟实现ls-l命令使用​​ls-l​​命令返回了以下信息文件类型文件权限连接......
  • [Linux 高并发服务器]GDB调试
    [Linux高并发服务器]GDB调试[Linux高并发服务器]GDB调试​​[Linux高并发服务器]GDB调试​​​​GDB是什么​​​​预先准备​​​​基本命令​​​​例子​​​​进入和......
  • [Linux 高并发服务器]Makefile
    [Linux高并发服务器]Makefile[Linux高并发服务器]Makefile​​[Linux高并发服务器]Makefile​​​​什么是Makefile​​​​文件命名和规则​​​​Makefile工作原理​​......
  • [Linux 高并发服务器]制作静态库与动态库
    [Linux高并发服务器]制作静态库与动态库[Linux高并发服务器]制作静态库与动态库​​[Linux高并发服务器]制作静态库与动态库​​​​什么是库​​​​静态库的制作和使用......
  • linux ftp 操作命令
    1. Linux 终端连接FTP[oracle@Dave~]$ ftp10.85.7.97Connectedto10.85.7.97.220Serv-UFTPServerv6.4forWinSockready...500'AUTH':commandnotunderstood.......
  • Linux 查看磁盘空间
    linux查看磁盘空间可以使用df和du命令。dfdf以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。例如,我们使用df-h命令来查看......
  • 简述五种开源NAS存储服务器--转
    存储对于公司来说是必不可少的:数据必须被存储、检索、共享和保护。下面小编为大家介绍一下5款开源的NAS存储服务器一、云计算云计算正在蓬勃发展,比任何云存储系统都要快......
  • linux rabbitmq 安装方法
    1.安装erlang运行以下命令,安装erlang所需要的依赖包。yuminstall-ymakegccgcc-c++m4opensslopenssl-develncurses-develunixODBCunixODBC-develjavajav......
  • [ Linux ] 进程间通信之共享内存
    在上篇博文我们了解了通过管道完成进程间通信,我们了解匿名管道和命名管道,并且通过编码模拟实现使用了匿名管道和命名管道。我们知道要让进程间完成通信必须让这两个进程首先......