系统编程-操作系统概论PART2
<1> 操作系统提供的服务

<2> 现代操作系统的特征

2.1 微内核(英文中常译作µ-kernel或者micro kernel)
这是一种能够提供必要服务的操作系统内核;其中这些必要的服务包括任务,线程,交互进程通信(IPC,Inter-Process Communication)以及内存管理等等。
所有服务(包括设备驱动)在用户模式下运行,而处理这些服务同处理其他的任何一个程序一样。
因为每个服务只是在自己的地址空间运行。所以这些服务之间彼此之间都受到了保护。

2.2 分布式操作系统(Distributed Operating System)
分布式操作系统是将负载分散到多个计算机硬件服务器上的系统。这种操作系统提供更好的性能和可用性,因为它分布在多个组件中。
PS: 分布式软件系统
分布式软件系统(Distributed Software Systems),是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。
它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。
2.3 面向对象设计
面向对象设计有利于模块化设计,有利于扩展
<3> 操作系统的历史
下图红线左侧的都是unix操作系统
windows macOS linux 和unix 的关系

<4> Linux操作系统的基本构成

内核

ubuntu源码目录

ubuntu上的内核压缩文件, BootLoader加载的就是这个文件

最小文件系统: BootLoader先加载该最小文件系统,它会执行一些初始化操作,完毕后才会加载根文件系统。

<5> 启动流程

<6> init进程

<7> 内存管理概述

Linux操作系统的内存布局

而下图主要是更清晰地展示了内核空间的布局

<8> 段页式内存管理


<9> 系统调用

我们自己写的应用程序、linux的shell、一些库函数,都可以调用系统调用来获得操作系统内核提供的服务。
在调用系统调用过程中,和调用系统调用结束之后,Linux的进程的运行状态会发生变化,前者在内核态,后者处在用户态。
PS:不同的具体的操作系统提供的系统调用都不一样吗?
NO!有标准,这就是POSIX标准

.
系统编程-操作系统概论PART2的更多相关文章
- Linux系统编程温故知新系列 --- 01
1.大端法与小端法 大端法:按照从最高有效字节到最低有效字节的顺序存储,称为大端法 小端法:按照从最低有效字节到最高有效字节的顺序存储,称为小端法 网际协议使用大端字节序来传送TCP分节中的多字节整数 ...
- 【转载】使用C#进行系统编程
原文:使用C#进行系统编程 虽然对于系统编程(System programming)的定义很模糊,不过可以将其描述为在比特.字节.指令,或CPU周期层面所进行的思考.系统编程这个概念也暗含了对性能和可 ...
- Linux系统编程@进程通信(一)
进程间通信概述 需要进程通信的原因: 数据传输 资源共享 通知事件 进程控制 Linux进程间通信(IPC)发展由来 Unix进程间通信 基于System V进程间通信(System V:UNIX系统 ...
- 《Linux/Unix系统编程手册》读书笔记1
<Linux/Unix系统编程手册>读书笔记 目录 最近这一个月在看<Linux/Unix系统编程手册>,在学习关于Linux的系统编程.之前学习Linux的时候就打算写关于L ...
- Linux 系统编程
简介和主要概念 Linux 系统编程最突出的特点是要求系统程序员对它们工作的的系统的硬件和操作系统有深入和全面的了解,当然它们还有库和系统调用上的区别. 系统编程分为:驱动编程.用户空间编程和网络编程 ...
- C语言嵌入式系统编程修炼之二:软件架构篇
模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求.C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行 ...
- C语言嵌入式系统编程修炼之一:背景篇
不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力.无疑,汇编语言具备这样的特质.但是,归因于汇编语言开发过程的复杂性,它并不是嵌入式系统开发 ...
- 《Linux/Unix系统编程手册》 时间子系统
Linux下操作系统编程有两本经典APUE即<Advanced Programming in the UNIX Environment>和TLPI<The Linux Program ...
- 读书笔记之Linux系统编程与深入理解Linux内核
前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...
- Linux系统编程【转】
转自:https://blog.csdn.net/majiakun1/article/details/8558308 一.Linux系统编程概论 1.1 系统编程基石 syscall: libc:标准 ...
随机推荐
- C# 使用模式匹配的好处,因为好用所以推荐~
类型检查和转换:当你需要检查对象是否为特定类型,并且希望在同一时间内将其转换为那个类型时,模式匹配提供了一种更简洁的方式来完成这一任务,避免了使用传统的as和is操作符后还需要进行额外的null检查. ...
- Odoo 通过Javascript调用模型中自定义方法
实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 在js脚本函数中调用模型中自定义方法: this._rpc({ model: 'demo.wizard ...
- Linux 文本文件编辑相关命令简介【Linux 常用命令系列二】
〇.前言 本文介绍了如何通过 vim 命令,对文本文件进行打开.编辑.保存等相关操作,并通过简单的示例演示了常用用法. 一.关于文本文件的操作 1.1 打开,查看(cat).编辑(vim) 打开文本文 ...
- APK包的加固手段收集(浅)
目录 防止APK被调试 加壳 代码混淆: 检测调试器: 使用反调试技术: 环境检测: 使用Native代码: 多层防护: 防止APK被篡改 签名校验: V1 签名机制 V2 签名机制 V3 签名机制 ...
- 免费使用TasteWP一键搭建线上临时WordPress网站
虽然用宝塔面板或者1Panel面板可以非常快速的搭建一个WordPress网站,但是有时候只想测试下我设计的页面或者开发的主题和插件,又得买服务器,绑定域名,安装程序,搭建起来也过于浪费时间了:再或者 ...
- Snipaste截图工具-测试工程师强推
Snipaste主要功能是截图和贴图,网上下载直接安装即可. 个人认为Snipaste比其它截图好用的点: 快捷键简单.Snipaste只需按F1截图,不会和其它截图工具的快捷键冲突 贴图功能.贴图功 ...
- 【Java】单号创建服务
需求:ERP项目存在若干个业务功能,每个业务的单子的单号创建规则需要被统一规划 1.每个业务有自己对应的标识 2.业务单号必须以英文字母为前缀,长度在2 - 4个字符 3.单号的组成 = [ 前缀 ] ...
- 【郝斌C ST】02
自学视频<郝斌C语言自学教程> 10: https://www.bilibili.com/video/BV1os411h77o C语言大纲 - 1.简介 - 2.基本编译知识 - 3.数据 ...
- 【Java】Reflection 反射机制 02获取类的一切
先创建一个可演示的类 注解类 package cn.dai.Reflection.demo; import java.lang.annotation.ElementType; import java. ...
- XML 教程——检视阅读
基本 XML 简介 XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据.HTML 被设计用来显示数据. 什么是 XML? XML 指可 ...