在Linux操作系统内核内部,进程是通过一个链表,而且是一个双向链表来管理的。

进程描述符:每一个进程都有其描述符,每一个描述符彼此之间都有关联性的。

双向链表:

一个进程内部可能包含多个线程。

上下文切换(Context swtch)

假如说进程A从当前CPU上被拿走,切换成进程B,进程A有自己的描述符(task_struct),且被挂起。被Suspend(栈指针),CPU内部,包括指令计数器等保存下来。

保存在进程描述符文件当中。而进程描述符是由内核维持。所以这些信息都保存在内核中。

当A进程被切换出去,就意味着B进程被调度上来。这一过程被叫做恢复线程(Resume)

总的过程就叫做上下文切换。

进程A------CPU------进程B

上下文切换由谁完成?----由内核。

这意味着:

每一次进程切换都要先从用户空间转到内核模式,然后再到用户模式。

注意:不可能由一个进程到另一个进程,必须由内核来指挥完成。

所以CPU的整体时间就分为两部分:

一部分是用户空间所有进程加起来的计的时间

另一部分是内核空间所占用的时间

不管是那个进程,CPU总是分配到用户空间一部分,又分配到内核空间一部分。

Linux支持进程抢占。

优先级高的可以抢占优先级低的。

但不是随时都可以抢占,-------系统时钟。

系统时钟:

有内部的时间频率。

Tick:滴答----时间解析度

操作系统是怎么记录时间的?

每一次滴答(tick),都会产生可抢的时钟中断。

滴答来了,就可以抢了。

Linux的进程类别:

1、交互式进程(IO密集型):等待IO,对CPU要求量特别小。

2、批处理进程(CPU密集型):也可以理解成守护进程。

3、实时进程(Real-time):随时运行,优先级非常高的进程

对于PC(桌面):交互式进程优先级应该是高优先级的,IO,,,,,

对于服务器来说:一般以批处理为主(CPU)

现在很多调度器可以这样来实现:

让批处理进程多一些时间片。----时间片比较大,但优先级低。

而交互式进程时间片少,但优先级高。

调度就是按照优先级来完成的。

Top命令是用来显示系统运行的进程信息。

Linux优先级:

1、实时进程优先级:1-99   数字越小,优先级越低。通常与内核相关。

2、静态优先级:通常用来描述用户进程优先级。

100-139 数字越小,优先级越高。

所以优先级范围是1-139

实时优先级比静态优先级高。

很显然,内核进程通常都是实时优先级。

TOP

显示RT的为实时进程。

linux系统ll历史,Linux操作系统原理笔记相关推荐

  1. linux系统基本命令实验原理,《操作系统原理与Linux》实验一 Linux基本命令.doc

    <操作系统原理与Linux>实验报告 实验名称:实验一 Linux基本命令的使用 实验日期: 2011年11月1日 班 级:B09513 学 号:20094051311 姓 名:王晓珍 计 ...

  2. (转)Windows系统、Linux系统 和 Mac OS操作系统 历史由来 与 区别?

    目录 1 UNIX 由来 2 Linux 由来 3 Windows与Linux的主要区别 4 关于Linux的一些疑惑 参考资料 目前常见的三大操作系统:Windows系统.Linux系统 和 Mac ...

  3. Linux系统的历史发展演绎

    回顾:Linux系统的历史发展演绎 作者:mary 来源:settingyin 发布时间:2006.09.06 本章讲述linux发展历程及基本概况.即使你对linux一无所知,学完本章,也会发现此时 ...

  4. 深度实践嵌入式linux系,深度实践嵌入式Linux系统移植 完整pdf_操作系统教程_源雷技术空间...

    资源名称:深度实践嵌入式Linux系统移植 完整pdf 第1章嵌入式系统架构与移植环境搭建2 第2章u-boot工程与编译系统14 第3章u-boot启动流程分析41 第4章ARM9/S3C2440 ...

  5. linux系统的笔记本,Linux:开源的免费操作系统_笔记本电脑_笔记本评测-中关村在线...

    ■linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议 ...

  6. 在Linux系统下安装更换操作系统

    我的当前的系统是Linux(版本centos6.5),之前是通过软通牒(UltraISO)在Windows系统下制作了这个Linux系统的U盘启动盘,然而在Linux系统下通过系统本身集成的dd命令, ...

  7. Linux系统之部署Linux管理面板1Panel

    Linux系统之部署Linux管理面板1Panel 一.1Panel介绍 1.1Panel简介 2.1Panel特点 二.本地环境规划 1.本此实践目的 2.本地环境规划 三.检查本地环境 1.检查操 ...

  8. 连接linux系统的mysql,Linux系统MySQL开启远程连接

    1.远程连接上Linux系统,确保Linux系统已经安装上了MySQL数据库.登陆数据库.mysql -uroot -p(密码). 2.创建用户用来远程连接 GRANT ALL PRIVILEGES ...

  9. imx6ull移植Linux系统第二篇——Linux内核的移植

    imx6ull移植Linux系统第二篇--Linux内核的移植 花了大概两周的时间,把Linux的移植认真学了一遍,期间踩了不少坑,花费了不少时间去解决各种奇奇怪怪的问题,最终完成了uboot.系统镜 ...

最新文章

  1. 使用渲染纹理的制作摄像头
  2. 陶瓷气体放电管型号大全
  3. java中如何getchar_是否有与getchar等效的Java?
  4. java spring 拦截器_Spring MVC拦截器(Interceptor)的配置及使用
  5. B - Ada and Queue
  6. webview跟html通信的原理,1.iOS: webView与html的交互
  7. 分布式配置中心之 —— nacos使用详解
  8. ElasticSearch启动报错,报ERROR: [3] bootstrap checks failed
  9. PHPWAMP开启SSL,PHPWAMP配置ssl证书
  10. win10 mysql 卸载不干净,安装提示,The service already exists
  11. 50个最新漂亮的国外网站模板下载
  12. 关于 C++ 打印 PDF 打印及 PDF 转图片、合并
  13. 情话说不出?教你用Python做个表白程序,女神:饭在锅里,人在..
  14. 本科操作系统学习笔记(上篇)
  15. 服务器域名绑定公网IP地址
  16. KubeSphere DevOps流水线部署
  17. 常用网络命令之ipconfig和ping的使用
  18. 嵌入式课程设计 —— STM32 定时器编程
  19. Python识别垃圾邮件
  20. Ordinal number(序数词表示)

热门文章

  1. 在JShell中尝试Java9 HTTP客户端和Process API
  2. java程序中用户名和密码_在Java应用程序中使用密码术
  3. SpringBoot AutoConfiguration魔术如何工作?
  4. java 过滤xss脚本_Java Web应用程序的反跨站点脚本(XSS)过滤器
  5. threadlocal_了解ThreadLocal背后的概念
  6. 带有ActiveMQ和Maven的JMS Sender应用程序
  7. 一时冲动:“通往瓦尔哈拉之路的冒险”
  8. 内存不足:杀死进程或牺牲孩子
  9. 仔细研究Java Identity API
  10. 通过基于JDBC的用户存储部署Identity Server