图解OS和Linux的基础知识

“试着尽量用图示来表示个人对内容的理解,不足之处,还望不吝指教。”

一. CPU

1. cpu与指令集

  • CPU分为运算器和控制器
  • CPU指令
    • 特权指令
      • 拥有管理权限,(一般情况下,只有OS才有权限运行特权指令)
    • 普通指令
      • 拥有普通功能,一般应用程序运行
  • 不同的运算由不同的运算器完成运算(由指令集提供运算)
  • 程序员:一般面向操作系统编程

图示说明

2. 人与机器

感觉没什么好解释的,一切尽在图中

图示说明

二. OS

1. OS的目的与功能

  • OS:Operating System
  • System Call
    • 简称为:Syscall (系统调用)
  • OS的通用目的与功能

图示说明

2. 编程的层次

  • 硬件规格:hardware specifiacation
    • 不同厂商的硬件规格千差万别,API也各不相同,写起来极为不便;
  • 系统调用:数量很少,但是很精巧;
  • 库调用:library call
    • 把底层的功能整合出来,提供成离最终目标更近的功能;对所有的计算机功能来说,所有的功能都是通过调用实现;(通常都是c,c++库)

图示说明

3. 指令环

  • 由内到外依次是环0环1环2环3
  • 环0是特权指令,一般只有操作系统有权限运行;
  • 环1、环2出于历史原因,没有使用;
  • 环3是普通指令,一般应用程序使用;
    • 特殊情况:例如:mkdir /home/test
    • Note:没办法直接完成,需要向内核申请权限;

图示说明

4. 程序的运行模式

  • 用户空间:user space(us)
  • 内核空间:system space

图示说明

三. UI:User Interface

对OS来说:UI是用户接口、对用户来说UI是前端;

  • GUI:Graphic User Interface (图形用户接口)
  • CLI:Command Line Interface (命令行接口)

图示说明

四. ABI与API

  • ABI:Application Binary Interface(应用程序二进制接口)
    • 描述了应用程序(或者其他类型)和操作系统之间或其他应用程序的低级接口。
  • API:Application Programming Interface(应用程序编程接口)
    • 是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节

图示说明

五. 主流的CPU架构

图示说明

六. 流行的OS分支

图示说明

原文链接:https://segmentfault.com/a/1190000004936765

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2016-04-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏喵了个咪的博客空间

phalapi-进阶篇3(自动加载和拦截器)

#phalapi-进阶篇3(自动加载和拦截器)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. ...

27730
来自专栏JavaEdge

项目开发中正确的打日志姿势ERROR:WARNINFO:TRACE

使用slf4j 使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。 实现方式统一使用: Logback框架 打日志的正确方式 什么时候应该打...

7620
来自专栏非著名程序员

Android Studio你不知道的调试技巧

? 写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 Eval...

328100
来自专栏武军超python专栏

2018年8月16日多线程并发和队列

静态文件的打包:静态文件包括图片,视频等静态的文件 MANIFEST.in include  如果要打包静态文件,定义MANIFEST.in配置文件

15660
来自专栏Golang语言社区

Golang学习--GroupCache的使用

groupcache 是 Brad Fitzpatrick 最新的作品,目标在于取代一部分memcached的功能。以官方的说明是:groupcache ...

60890
来自专栏编程之旅

Python——爬虫入门 Urllib库的使用

最近在系统的学习Python爬虫,觉得还是比较有意思的,能够干很多的事情,所以也写点文章记录一下学习过程,帮助日后回顾。

10810
来自专栏柠檬先生

你不知道的javaScript笔记(7)

异步:现在与将来   分块的程序     可以把JavaScript 程序写在单独的js 文件中,这个程序是由多个块组成的,这些块     中只有一个是现在执行...

21450
来自专栏嵌入式程序猿

进入main之前,都干了什么,老实招来

经常有程序猿会说软件上电后从main函数开始执行,其实是不对的,在进入main之前,经历了好多,今天就带你来熟识下IAR环境下,应用软件系统的main函数之前的...

318100
来自专栏玄魂工作室

老司机教你下载tumblr上视频和图片的正确姿势

本文面向初学者。 很多同学问我:“我非常想学Python编程,但是找不到兴趣点”。 还有的同学呢,找到了很好的兴趣点,但是无从下手,“玄魂老师,我想下载tumb...

1.4K70
来自专栏技术小讲堂

探寻ASP.NET MVC鲜为人知的奥秘(2):与Entity Framework配合,让异步贯穿始终

Why 在应用程序,尤其是互联网应用程序中,性能一直是很多大型网站的困扰,由于Web2.0时代的到来,人们更多的把应用程序从C/S结构迁移到B/S结构,这样会带...

32170

扫码关注云+社区

领取腾讯云代金券