当前位置: 首页 > news >正文

linux学习--第五天

-进程

        -概念

           进程描述是一个程序执行过程,当程序执行后,执行过程开始,则进程产生;执行过程结束,则进程也就结束

        -进程的特点

           进程是一个独立的可调度的活动,由操作系统进行统一调度,相应的任务会被调度到cpu中进行执行

进程一旦产生,则需要分配相关资源,同时进程是资源分配的最小单位

        -进程与程序的区别

                1.程序是静态的,它是保存在磁盘上的指令的有序集合,没有任何执行的概念

                2.进程是一个动态的概念,它是程序执行的过程,包括了动态创建,调度和销毁的整个过程

        -并发与并行

                并行执行:表示多个任务可以同时执行,依赖于物理支持

                并发执行:在同一时间段由多个任务在同时进行,由操作系统的调度算法实现;如:时间片轮转

           时间片轮转

                特点:

        1.一个时间片的时间非常,由操作系统调度算法来实现每个时间片所执行的任务,一旦一个任务的时间片消耗完,则操作系统会切换到下个任务到CPU中执行

        2.如果没有执行结束,则等待下一次分配

        -Linux进程管理

                1.在Linux系统中,管理进程使用树型管理方式

                2.每一个进程都需要与其他某一个进程建立父子关系,对应的进程叫做父进程

                3.Linux系统会为每个进程分配id,这个id作为当前进程的唯一标识,当进程结束时,则会被回收

                4.进程的id与父进程的id分别通过getpid()getppid()来获取

        -进程的空间分配

                32位Linux系统中,会为每一个进程分配4G的空间,分为俩部分,高位1G为内核空间低位3G为用户空间4G空间为虚拟空间

        tips:

            1.当用户进程需要通过内核获取资源时,会切换到内核态运行,此时当前进程会使用内核空间资源

            2.用户切换的内核态运行时,主要是通过系统调用

        虚拟地址与物理地址

        虚拟地址:虚拟地址并不代表真实的内存空间,,而是一个用于寻址的编号

        物理地址:是指内存设备中真实存在的存储空间的编号

        关系:虚拟地址通过映射的方式建立与物理地址的关联,从而达到访问虚拟地址就可以访问到对应的物理地址

        使用虚拟地址的原因:

            1.直接访问物理地址,会导致地址空间没有隔离,很容易导致数据被修改

            2.通过虚拟地址可以实现每个进程空间都是独立的,操作系统会映射到不用的物理地址区间,在访问时互不干扰

        tips:1.进程栈的默认大小是8M,可以通过ulimit -s查看        

                 2.进程堆的大小小于3G

                 3.通过ulimit -u查看系统的最大进程数

        -进程的状态管理

                三态模型:运行态,就绪态,阻塞态

                三态模型图示:

                五态模型:新建态,终止态,运行态,就绪态,阻塞态

                五态模型图示

        经常使用的进程状态:

            1.运行态:此时进程正在运行或者准备运行都属于运行态

            2.睡眠态:此时进程在等待一个事件的发生或某种系统资源

                可中断睡眠:可以被信号唤醒或者等待事件或者资源就绪

                不可中断睡眠:只能等待特定的事件或者资源就绪

            3.停止态:进程停止接受某种处理,例如:gdb调试断点信息处理

            4.僵尸态:进程已经结束但是还没有释放进程资源

        -进程的相关命令

                ps  -ef:列出所有进程

                top:实时显示进程的信息

                top  -i:不显示任何闲置或无用的进程

                pstree:将所有的进程以树型结构的方式进行展示

                kill  -9:终止进程

                

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PG表空间
  • unity3d入门教程五
  • 安全区域边界等保测评
  • 基于HPLC的低压电力采集方案
  • 通过 Docker 部署 WordPress 服务器
  • 【C++】STL--string(上)
  • 通俗理解矩阵的秩
  • 浅谈树型结构——树
  • 通信工程学习:什么是UNI用户网络接口
  • unity3d入门教程七
  • 黑马十天精通MySQL知识点
  • DAY13信息打点-Web 应用源码泄漏开源闭源指纹识别GITSVNDS备份
  • lvs-dr模式实验详解
  • C++IO流
  • uni-app 应用名称 跟随系统语言 改变
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 77. Combinations
  • AWS实战 - 利用IAM对S3做访问控制
  • dva中组件的懒加载
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • js操作时间(持续更新)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Linux gpio口使用方法
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • uva 10370 Above Average
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • Yii源码解读-服务定位器(Service Locator)
  • 回顾 Swift 多平台移植进度 #2
  • 警报:线上事故之CountDownLatch的威力
  • 小程序button引导用户授权
  • 最简单的无缝轮播
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ## 基础知识
  • #APPINVENTOR学习记录
  • #pragam once 和 #ifndef 预编译头
  • #pragma预处理命令
  • #stm32驱动外设模块总结w5500模块
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (javascript)再说document.body.scrollTop的使用问题
  • (定时器/计数器)中断系统(详解与使用)
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四)Linux Shell编程——输入输出重定向
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .net framework4与其client profile版本的区别
  • .NET 回调、接口回调、 委托
  • .net 连接达梦数据库开发环境部署
  • .net 提取注释生成API文档 帮助文档
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .Net程序帮助文档制作
  • .NET企业级应用架构设计系列之技术选型
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • ??myeclipse+tomcat