个人用操作系统笔记(待补充)

文章目录

  • 一、绪论
  • 二、Linux操作系统
    • 进程
    • 线程(进程内的基本调度单位)
    • 文件与设备
      • 文件权限
      • 文件系统
      • 文件连接(共享)
    • 地址空间
      • 缺页中断
    • 用户
      • 超级用户root(用户标识与组标识都是0)
    • 重定向
    • 系统启动
    • 常用命令
  • OS研究的最新进展
    • 微内核
    • Mach操作系统
    • Plan-9操作系统
    • 微内核缺点
    • 第二代微内核
      • L4微内核
      • Exokernel
      • Spin 操作系统
      • Scout操作系统
    • 面向互联网的OS
      • WebOS
      • 2K operating system
      • Globe
      • TinyOS
        • nesC编程

一、绪论

分时操作系统(每间隔一个时间片,处理来源不同的任务)
Unix:简洁便携,适合个人计算机使用。
Mninx:微内核,短小精悍,面向教学的操作系统。(微内核系统性能差,主流OS已不再采用,嵌入式环境偏多。)
linux:大内核,性能较好。
GNU:拥有gcc

二、Linux操作系统

OS:在核心态/管态/内核态下运行的软件,是计算机系统的资源管理器
分为核内核心态,可以执行特权指令与普通指令)与核外用户态,只能执行普通指令)

把有安全隐患的指令定义为特权指令
把有安全隐患的操作由OS执行
OS需要执行安全检查来保证系统安全性
应用程序要经过系统调用才可调用OS

判断是否是特权指令:执行该指令的应用程序是否会影响到其他程序运行
接口:程序员接口&用户级接口
功能:处理机管理&存储器管理&设备管理&文件系统&网络管理

进程

进程与程序的区别:

进程就是程序的一次执行过程,程序就是外部存储设备上的可执行文件。
进程是动态的,暂时的,程序是静态的,永久性的。
进程和程序之间不存在一一对应关系。

在这里插入图片描述

线程(进程内的基本调度单位)

线程就是执行流,拥有自己的状态和运行现场的少量数据。
但是没有单独的代码和数据,而是和其它线程共享。

文件与设备

在linux中,各种资源被抽象为文件!设备也是文件!

正规文件(-)(在块设备上构造的文件)
目录文件(d)(用于存储和访问文件名)
字符设备文件©
块设备文件(b)
管道(p)(进程之间的通信机制,把进程输出作为另一进程的输入。如编译器)
Socket接口(s)

对于设备,每个设备对应一个设备驱动程序。设备请求由文件系统转交给设备驱动程序

文件权限

每个文件的i-结点中存在9位权限位,分别对应文件拥有者、同组用户、组外用户的可读、可写、可执行权限。

文件系统

Linux没有盘符!(诸如C盘,D盘,E盘),C:abc仅仅代表当前目录下名为"C:abc"的文件!
"./“表示当前目录,”../"表示父目录。

文件连接(共享)

硬连接 (in file1 file2):被连接文件有一个连接计数,取消连接时,计数减1,文件连接数为0时删除文件。
符号连接(类似快捷方式) (in -s file1 file2):仅存放被连接文件的路径名。

地址空间

程序在虚拟地址空间中运行,只有当虚拟地址映射到物理地址空间时,程序才能够访问数据。

缺页中断

当应用程序访问无效区域时,处理机产生一个异常缺页中断)。缺页中断处理程序触发操作系统实现虚拟存储和内外存对换

进程地址空间
核心地址空间
总线地址空间
外设地址空间
DMA地址空间
低端地址空间和高端地址空间问题

用户

所有进程/文件都属于某个用户与某个用户组。当进程访问文件时,会根据二者的用户与用户组进行权限检查

超级用户root(用户标识与组标识都是0)

超级用户拥有全部的权限,可以通过su命令切换到root,有些命令只有root用户才可以执行(比如shutdown)。

重定向

输入重定向:进程可以不从键盘上输入命令,而是从文件中输入命令。
输出重定向:进程可以把程序的结果输出到文件中,而不是屏幕上显示。

系统启动

(1)开机加电
(2)BIOS启动,系统自检,读入引导区
(3)执行引导区代码,装入OS内核
(4)初始化OS
(5)创建第一个进程并初始化
(6)进程转换进程图象并执行第一个软件(init
(7)init执行RC脚本初始化各个终端
(8)终端上出现login提示用户登录
(9)登录成功后执行shell处理程序
(10)shell等待用户输入命令并执行

常用命令

login时输入的密码不显示!
用分号";"隔开多条指令!

管道命令:用"|"隔开,前一条命令的输出会成为后一条命令的输入
输入重定向:命令<filename
输出重定向:命令>filename
显示当前目录:pwd
显示/设置时间日期:date
显示当前用户与用户组:whoami
输出信息:echo
查询某个命令的用法:man <命令名>
退出系统:logout
重启系统:reboot
关机:shutdown
改变当前目录:cd <目录名>
设置/修改密码:passwd
变成超级用户:su
显示文件列表:ls
显示文件内容:cat
文件复制:cp file1 file2(把file1的内容复制到file2中)
文件重命名:mv
删除文件:rm
查找文件:find
创建目录:mkdir
删除目录:rmdir
改变文件存取权限:chmod
改变文件所在用户:chown username filename
改变文件所在用户组:chgrp groupname filename
字符串匹配:grep
排序:sort
去重:uniq
比较文件共有/不共有的行:comm -12 file1 file2/comm -23 file1 file2
比较文件不同的行:diff file1 file2
合并两个文件:paste
将输出复制到文件中:tee
检查进程状态:ps
杀死进程:kill -9 pid
启动文本编辑器:vi filename按wq保存退出,按q!不保存退出

OS研究的最新进展

微内核

Unix中扩充程序只能存在于核内,但只能在内核扩充会显得臃肿,可靠性不足
微内核仅仅保留最基本的功能(作业、线程、进程通信(IPC)、内存管理原语等),把大部分功能放在核外,实现核外扩充

  1. 由于文件系统和硬件无关(和硬件相关的是存储设备,而不是文件系统),因此放在核外
  2. 进程管理、存储管理、设备管理不同的操作系统有不同的划分(部分在核内,部分在核外)。
  3. 操作系统体系结构基于客户/服务器模型(C/S)和消息传递
  4. 通过操作系统的仿真器实现对其它操作系统的兼容

Mach操作系统

内核提供线程、进程间通信。

Plan-9操作系统

每个进程都有自己的可变名称空间
进程可重排列、添加和删除自己的命名空间,而不影响其他进程。
客户-服务器环境下的分布式计算概念。
由于Plan 9的系统模型与其他现代操作系统差异很大,有时很难将外部软件移植到Plan 9。
Plan 9专注于文件,命名是其表现力的核心。它将本地名称空间和全局约定相结合以互连网络资源,避免了维护全局统一名称空间的困难。

微内核缺点

由于微内核操作系统的类似RPC调用是通过消息传送机制实现的,而传统操作系统的系统调用一般是通过类似trap的方法实现。相比于trap方法,通过消息传送机制需要创建消息、发送消息、进程切换等更多的步骤。这些步骤使得微内核操作系统的消息传送部分成为一个瓶颈,其性能大大低于传统操作系统的系统调用部分。(原本是内核的部分变成了核外,通信有了额外的开销。
需要频繁的切换用户态与核心态,且Cache命中率并不高,性能较低

第二代微内核

解决现有缺陷的方法是:

  1. 扩大微内核,并把一些关键的服务程序和驱动程序重新加入到内核中去,从而减少系统在用户态和核心态之间的切换以及系统在不同地址空间之间的切换。
    但是,扩大内核的方法大大削弱了微内核思想带来的优点–扩大的内核降低了系统的扩充性、灵活性和可靠性
  2. 进一步减少内核的大小,并对RPC调用进行直接优化。这种思路导致了被称为第二代微内核的一些新的内核设计的出现。

L4微内核

支持一个基于消息传送的IPC原语,以便在此基础上实现高性能的RPC机制,性能很好,超过了许多操作系统。
提供了地址空间管理原语线程管理原语
当硬件中断发生时,微内核会产生一条消息,并把此消息发送到相关联的用户进程中,然后由用户进程中接收这条IPC消息的线程,并处理中断。(实现中断处理与内核的解耦

Exokernel

从优化IPC的角度出发,支持一个高度优化的原语保护控制转移(protected control transfer, PCT)。PCT是一个不带参数的跨地址空间的过程调用,其功能类似于一个硬件中断。在PCT的基础上,可以实现高级的IPC抽象如RPC
专注于安全地复用原始硬件:从基本硬件原语开始,应用程序级库和服务器可以直接实现传统的操作系统抽象,专门用于适当性和速度。

Spin 操作系统

SPIN是围绕一组核心服务设计的,包括线程、虚拟内存原语、设备驱动程序和扩展机制。这些模块是机器启动所需的系统其余部分的基础,是一个面向通信的操作系统,针对网络设备(如网络连接设备、机顶盒、手持设备等)。

Scout操作系统

Scout是一个面向通信的操作系统,针对网络设备(如网络连接设备、机顶盒、手持设备等),采用抽象路径

面向互联网的OS

WebOS

webos的目标是为广域应用程序提供一组通用的操作系统服务,包括资源发现、全局命名空间、远程进程执行、资源管理、身份验证和安全机制等。

  1. WebFS:一个全局文件系统层,允许未经修改的应用程序读写URL名称空间。通过AFS协议,需要缓存一致性的应用程序可以获得缓存一致性。
  2. 活动名称:一种将服务功能(如负载平衡、资源发现和故障透明度)从服务器逻辑移动到网络中的机制。
  3. 安全远程执行:我们相信应用程序将代表任意用户在远程节点上运行。必须提供保证,确保应用程序不会破坏远程服务器的完整性,并且服务器不能利用提供给程序的任何用户访问权限。
  4. 安全和身份验证:访问远程文件的应用程序必须先验证其身份,然后才能授予对受保护文件的访问权限。
  5. 事务:应用程序必须具有明确定义的故障模式。例如,中止的远程代理不应使用户的本地文件系统处于不一致的状态。

2K operating system

构建2K的主要目标是为管理动态性提供一个范式。它将展示一个基于以下设计思想的实验性网络中心自适应系统架构:
一种类似CORBA的通信底层,包括一个反射对象请求代理,用于构建系统服务,促进系统自适应,并提供一定程度的间接性,以灵活绑定命名方案、资源管理器和服务;
一个架构感知系统和用户组件的框架,为系统组件提供有关其环境的信息,并允许他们评估和利用系统的物理和逻辑架构;
QoS感知资源管理,允许为应用程序规范和提供服务。该系统将能够自我适应,优化其在不同环境下的性能和可靠性;
一种动态安全系统,支持在分布式系统中更改安全策略,并适应快速的系统更改。系统必须支持移动计算的委托和变更的撤销;以及
移动代理支持自动软件更新、远程管理、涉及推拉转换的优化和自动重新配置。

Globe

TinyOS

一种基于组件(Component-Based)的架构方式,使得能够快速实现各种应用。
采用模块化设计,所以程序核心往往都很小,这能够让TinyOS很有效的运行在无线传感器网络上并去执行相应的管理工作等。
TinyOS本身提供了一系列的组件,可以很简单方便的编制程序,用来获取和处理传感器的数据并通过无线电来传输信息。可以把TinyOS看成是一个可以与传感器进行交互的API接口,它们之间可以进行各种通讯。
TinyOS在构建无线传感器网络时,它会有一个基地控制台,主要是用来控制各个传感器子节点,并聚集和处理它们所采集到的信息。TinyOS只要在控制台发出管理信息,然后由各个节点通过无线网络互相传递,最后达到协同一致的目的,比较方便。
TinyOS提供一系列可复用的组件,一个应用程序可以通过连接配置文件将各种组件连接起来,完成需要的功能。
TinyOS的应用程序都是基于事件驱动模式的,采用事件触发去唤醒传感器工作,一般由硬件中断处理来驱动事件。
每一个task都很短小,能够使系统的负担较轻。
events一般用在对于时间的要求很严格的应用中,可以优先于tasks和其他events。
在TinyOS中由于tasks之间不能互相占先执行,所以TinyOS没有提供任何阻塞操作
Ad-hoc:一种不需要网桥(AP)的无线对等传输模式,任两个sensor若在彼此的通讯覆盖范围内,则这两个sensor可直接互相通讯,共享资源。它具有对称性,即B若在A的通讯范围内,则A也在B的通讯范围内;但往往由于某些外部条件的限制,可能会造成这种对称的不协调。
Multi-hoc:若在两个相距较远的sensor之间通讯,可以寻找一个中间的sensor作为转发的节点,则可以采用接力的方式来完成通讯过程。利用它可以增加无线网络的通讯范围,但随着传输次数增加,数据的正确率降低,传输过程的可靠性也降低。

nesC编程

TinyOS用nesC编程,是一种类似C的语言,它是对C的扩展,也是结构化的语言。它是基于组件式的编程,模块化的设计。
nesC组件有两种:
Module(模块):提供接口,需要对提供接口里的command与使用接口的event进行实现。
Configuration(连接配置文件):把各个组件和模块组合在一起。

nesC接口(interface):分为无参数&有参数两种。

TinyOS模拟器:同时模拟多个sensor nodes运行同一个程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/451223.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【优选算法篇】踏入算法的深邃乐章:滑动窗口的极致探秘

文章目录 C 滑动窗口详解&#xff1a;进阶题解与思维分析前言第二章&#xff1a;进阶挑战2.1 水果成篮解法一&#xff1a;滑动窗口解法二&#xff1a;滑动窗口 数组模拟哈希表复杂度分析&#xff1a;图解分析&#xff1a;示例&#xff1a;滑动窗口执行过程图解&#xff1a; 详…

ARM嵌入式学习--第三天

ARM常用伪指令分析 ARM伪指令&#xff1a;为了方便程序员使用&#xff0c;编译器设计的指令&#xff0c;这个指令ARM核无法识别&#xff0c;需要编译器对它翻译成ARM核所识别的指令 -LDR R1&#xff0c;0xabcdef分析 总结&#xff1a; 编译器在编译的时候&#xff0c;将ldr r…

深入拆解TomcatJetty(一)

深入拆解Tomcat&Jetty&#xff08;一&#xff09; 专栏地址&#xff1a;https://time.geekbang.org/column/intro/100027701 1、Web容器是什么 早期的 Web 应用主要用于浏览新闻等静态页面&#xff0c;HTTP 服务器&#xff08;比如 Apache、Nginx&#xff09;向浏览器返…

008、相交链表

0、题目描述 相交链表 1、法1 嵌套循环&#xff0c;从listA的第一个节点开始与listB的每个节点比对&#xff0c;有相同的就返回这个节点。 时间复杂度是n^2 struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode* pa …

多媒体(1)

多媒体 多媒体的信息结构是【非线性的网状结构】 多媒体技术的基本特征&#xff1a;集成性、交互性、实时性、数字化、多样性 多媒体数据具有【数据量大】、【数据类型多】、【数据类型间区别小】、【输入输 出复杂】的特点 在多媒体数据库中&#xff0c;基于内容检索的关键技术…

智联云采 SRM2.0 testService SQL注入漏洞复现

0x01 产品简介 智联云采是一款针对企业供应链管理难题及智能化转型升级需求而设计的解决方案,针对企业供应链管理难题,及智能化转型升级需求,智联云采依托人工智能、物联网、大数据、云等技术,通过软硬件系统化方案,帮助企业实现供应商关系管理和采购线上化、移动化、智能…

【AI绘画】Midjourney进阶:引导线构图详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 &#x1f4af;前言&#x1f4af;什么是构图为什么Midjourney要使用构图 &#x1f4af;引导线构图特点使用场景提示词书写技巧测试 &#x1f4af;小结 &#x1f4af;前言 【AI绘画】Midjourney进阶&a…

嵌入式职业规划

嵌入式职业规划 在嵌入式的软件开发中&#xff0c;可以分为&#xff1a; 嵌入式MCU软件开发工程师&#xff1b; 嵌入式Linux底层&#xff08;BSP&#xff09;软件开发工程师&#xff1b; 嵌入式Linux应用开发工程师&#xff1b; 嵌入式FPGA算法开发工程师 对于前两个阶段 …

【时间之外】IT人求职和创业应知【9】

目录 1. 云计算ETF领涨,中证云计算与大数据主题指数估值较低 2. 南向资金持有海螺创业市值减少,但仍保持高比例持股 3. 深创赛澳大利亚分站赛落幕,龙岗区与3个意向落地项目签约 认知决定你的赚钱能力。以下是今天可能影响你求职和创业的热点新闻: 今日关键字:数字战争…

ChatGPT官方自带的测试页面 Playground

Playground页面相当于是网页端的大模型调用应用&#xff0c;可以在这里直接选择不同类型模型、选择不同的参数、输入不同的提示测试模型输出结果&#xff0c;并且这个页面还可以查看网页端操作对应的代码&#xff0c;整体操作流程非常便捷&#xff0c;也非常适合初学者进行零代…

UE5 猎户座漂浮小岛 02 模型 地形

UE5 猎户座漂浮小岛 02 模型 地形 1.模型 1.1 导入 1.2 统一模型比例 1.3 添加碰撞体 2.地形 2.1 地 2.2 山体 2.3 海洋 2.4 花草

关于武汉芯景科技有限公司的限流开关芯片XJ6288开发指南(兼容SY6288)

一、芯片引脚介绍 1.芯片引脚 二、系统结构图 三、功能描述 1.EN引脚控制IN和OUT引脚的通断 2.OCB引脚指示状态 3.过流自动断开

Java基于SSM框架的教学辅助微信小程序【附源码、文档】

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

构建后端为etcd的CoreDNS的容器集群(六)、编写自动维护域名记录的代码脚本

本文为系列测试文章&#xff0c;拟基于自签名证书认证的etcd容器来构建coredns域名解析系统。 一、前置文章 构建后端为etcd的CoreDNS的容器集群&#xff08;一&#xff09;、生成自签名证书 构建后端为etcd的CoreDNS的容器集群&#xff08;二&#xff09;、下载最新的etcd容…

hdfs的客户端(big data tools插件)

1.下载hadoop的压缩包在Windows,后解压 2.下载hadoop.dll文件和winutil.exe文件(网上自行查找) 下载完把这两个文件放入hadoop的bin目录 3.设置环境变量: $HADOOP_HOME指向hadoop的文件夹 4.在jetbrains公司的软件里下载big data tools插件:(在此展示的idea的) 下载完重启ide…

1.ubuntu下安装noetic

1.首先安装常规手段安装乌班图系统 2.开始ROS 系统安装 1. 设置编码 $ sudo apt update && sudo apt install locales $ sudo locale-gen en_US en_US.UTF-8 $ sudo update-locale LC_ALLen_US.UTF-8 LANGen_US.UTF-8 $ export LANGen_US.UTF-82.添加源 $ sudo ap…

OpenMediaVault安装插件以及重置web控制台密码

常用插件&#xff08;可根据实际情况选择安装&#xff09; openmediavault-flashmemory&#xff1a;加载临时文件到内存&#xff0c;保护硬盘&#xff1b;openmediavault-fail2ban &#xff1a;扫描日志文件并禁止显示恶意迹象的IP-太多的密码错误&#xff0c;寻找漏洞等&…

【YOLOv11】制作使用YOLOv11的docker环境

目录 一 安装docker 1 安装依赖 2 添加docker官网 GPG 密钥、设置stable 仓库 3 安装 4 使用 二 环境制作 ① 拉基础镜像 ② 起容器 ③ 安装Anaconda3 ④ 安装YOLO11 ⑤ /root/.bashrc ⑥ 退出容器 ⑦ 保存镜像 ⑧ 镜像的使用 一 安装docker ubuntu:20.04 1 安装…

C语言复习第4章 数组

目录 一、一维数组的创建和初始化1.1数组的创建1.2 变长数组1.3 数组的初始化1.4 全局数组默认初始化为01.5 区分两种字符数组1.6 用sizeof计算数组元素个数1.7 如何访问数组元素1.8 一维数组在内存中的存储(连续存储)1.9 访问数组元素的另一种方式:指针变量1.10 数组越界是运行…

手机淘宝自动下单退货自动化RPA脚本机器人

使用手机集线器连接多个手机并发运行。 脚本分3个部分&#xff08;读取本地连接下单&#xff0c;退货获取退货地址信息&#xff0c;填写快递单号&#xff09; 脚本部分图结构看下面的图片 部分数据统计展示