Linux操作系统学习:day01

内容来自:Linux介绍

视频推荐:Linux基础入门教程-linux命令-vim-gcc/g++ -动态库/静态库 -makefile-gdb调试

day01

基础概念

Linux 是 UNIX 操作系统的一个克隆系统, 但是Linux是开源的。

Linux是一个基于文件的操作系统。操作系统需要和硬件进行交互, 对应Linux来说这些硬件都是文件,比如: 操作系统会将 硬盘, 鼠标, 键盘, 显示屏等抽象成一个设备文件来进行管理。

一些名词

GNU:Gnu’s Not Unix. 可以理解成一种口号,号召软件自由。

POSIX:(Portable Operating System Interface for Computing Systems)是由 IEEE 和 ISO/IEC 开发的一套标准。POSIX 标准是对 UNIX 操作系统的经验和实践的总结,对操作系统调用的服务接口进行了标准化,保证所编制的应用程序在源代码一级可以在多种操作系统上进行移植

BSD开源协议: BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”。

GPL:General Public License. GNU通用公共许可证,GPL 授予程序的接受方下述的权利,即 GPL 所倡导的“自由”:

  • 可以以任何目的运行所购买的程序;
  • 在得到程序代码的前提下,可以以学习为目的,对源程序进行修改;
  • 可以对复制件进行再发行;
  • 对所购买的程序进行改进,并进行公开发布。

自由软件:GNU项目下的所有软件都基于GPL许可证(非GNU项目也可使用GPL),都是自由软件。

版本号选择

官方每年会发布两个版本, 每个版本的版本号由两部分组成: 主版本号 + 副版本号

  • 主版本号为当年年份, 长期支持版的年份为偶数, 测试版年份为奇数
  • 副版本号为月份,在4月份发布的为相对稳定版, 在10月份发布的为测试版

因此应当选择主版本号为偶数,副版本号为 04的版本,进行安装使用。

Linux 内核

Linux 的内核主要由 5 个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。

  1. 进程调度 SCHED:

    • 进程调度指的是系统对进程的多种状态之间转换的策略。

    • 每启动一个可执行程序都会得到一个进程,进程的运行需要CPU的加持,而CPU的资源有限,如果要同时执行多个可执行程序(即,同时处理多个进程),需要分时复用CPU的时间片,时间的长短由内核决定。

    • 进程调度有3种策略:

      • SCHED_OTHER:分时调度策略(默认),是用于针对普通进程的时间片轮转调度策略。

      • SCHED_FIFO:实时调度策略,是针对运行的实时性要求比较高、运行时间短的进程调度策略。

      • SCHED_RR:实时调度策略,是针对实时性要求比较高、运行时间比较长的进程调度策略。

    FIFO和RR需要人为指定。

  2. 内存管理 MMU:

    • 内存管理是多个进程间的内存共享策略。在Linux中,内存管理主要说的是虚拟内存。

    • 每启动一个磁盘上的可执行程序,都会得到一个虚拟地址空间。虚拟地址空间又分为内核区和用户区。只可以操作修改用户区。

    • 将虚拟地址空间里面的数据先映射到物理内存,再通过CPU对物理内存里面的数据进行处理

  3. 虚拟文件系统 VFS:

    • 用程序(纯软件)将数据写入到磁盘(硬件),中间需要一个缓冲层,即操作系统提供的文件管理。
  4. 网络接口:

    • 网络接口分为网络协议和驱动程序,网络协议是一种网络传输的通信标准,而网络驱动则是对硬件设备的驱动程序。Linux 支持的网络设备多种多样,几乎目前所有网络设备都有驱动程序。
  5. 进程间通信:

    进程之间需要进行数据的交流才能完成控制、协同工作等功能,Linux 的进程间通信是从 UNIX 系统继承过来的。

    • 启动的多个程序若需要进行数据交互,必须要使用进程间通信。
    • Linux 下的进程间的通信方式主要有管道、信号、消息队列、共享内存和套接字等方法。

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

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

相关文章

【TensorFlow深度学习】使用TensorFlow实现双DQN与优先级经验回放

使用TensorFlow实现双DQN与优先级经验回放 使用TensorFlow实现双DQN与优先级经验回放:强化学习的高级策略探索双DQN算法简介优先级经验回放代码实现结语 使用TensorFlow实现双DQN与优先级经验回放:强化学习的高级策略探索 在深度强化学习领域&#xff0…

QQ音乐绿钻API接口:解锁更多音乐可能性

在我们日常生活中,音乐是不可或缺的一部分。无论是在上班途中,还是在健身房锻炼时,我们都可以通过听音乐来放松自己。然而,在现如今的音乐市场中,有时候我们会觉得收听的歌曲有限,想要尝试更多不同的音乐类…

《大道平渊》· 拾贰 —— 天下大事必作于细:做好每一件小事,必然大有所成!

《平渊》 拾贰 "天下难事必作于易,天下大事必作于细。" 社群一位大佬最近在研究新项目, 他做事的 "方法论" 令我深受启发。 他在测试项目时, 每一步都做的非常细致: 整个项目的测试都被划分为一件件小事, 然后有条不紊地推进…… …

代码随想录刷题笔记-哈希表篇

文章目录 242 有效的字母异位词(easy)力扣地址题目描述题目实例解题思路代码实现 383 赎金信(easy)力扣地址题目描述题目实例解题思路代码实现 49 字母异位词分组(mid)力扣地址题目描述题目实例解题思路代码实现 438 找到字符串中所有字母异位词(mid)力扣地址题目描述题目实例解…

【回溯】Leetcode 77. 组合【中等】

组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 解题思路 定义递归函数&#xff1…

免费插件集-illustrator插件-Ai插件-文本属性批处理

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,进行文本属性批处理。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&am…

16个免费学习Python的网站和教程(2024年最新资源)

16个免费学习Python的网站和教程(2024年最新资源) 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典&#xff…

利用python写一个根据聊天记录洞察事情的主题内容

要根据聊天记录洞察事情的主题内容,我们可以使用Python分析聊天文本的情感、关键词和主题。以下是一个简单的示例,展示了如何使用Python和相关库实现这一目标: 1. 首先,安装所需库: bash pip install nltk pip instal…

认识Django框架,使用Django 2024新手创建Django项目,使用编译工具:Pycharm

Django简单介绍 Django 是一个用 Python 编写的开源 web 应用框架,旨在促进快速开发、维护和部署高效、可扩展的 web 应用程序。它是遵循模型-模板-视图(MTV)设计模式的一个高级框架,尽管有时也被描述为遵循MVC(模型-…

【Three.js】知识梳理一:Three.js概述和基础知识

1.Three.js简介 Three.js是一个基于JavaScript编写的开源3D图形库,利用WebGL技术在网页上渲染3D图形。它提供了许多高级功能,如几何体、纹理、光照、阴影等,以便开发者能够快速地创建复杂且逼真的3D场景。同时,Three.js还具有很好…

使用seq2seq架构实现英译法

seq2seq介绍 模型架构: Seq2Seq(Sequence-to-Sequence)模型是一种在自然语言处理(NLP)中广泛应用的架构,其核心思想是将一个序列作为输入,并输出另一个序列。这种模型特别适用于机器翻译、聊天…

运用HTML+CSS+JS做一个贪吃蛇游戏

贪吃蛇游戏 前言效果图部分源码领取源码下期更新预报 前言 H5贪吃蛇大战HTML源码,可在本地浏览器打开访问index.html,或者上传到服务器或虚拟空间进行游玩! PC版操作 鼠标点击一下之后就可以控制方向,按A加速 移动端操作 左侧…

【Linux】进程8——进程创建和进程终止

1.进程创建 1.1.再谈fork 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 #include <unistd.h> pid_t fork(void);//pid_t为整形 返回值&#xff1a;子进程中的fork()返回0&#xff…

(BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)

6.开启 Spring Boot 特性有哪几种方式&#xff1f; 7.Spring Boot 需要独立的容器运行吗&#xff1f; 8.运行 Spring Boot 有哪几种方式&#xff1f; 9.Spring Boot 自动配置原理是什么&#xff1f; 10.Spring Boot 2.X 有什么新特性&#xff1f;与 1.X 有什么区别&#xff1f;…

spring最常用的注解

核心注解 Component 描述&#xff1a;将类标记为 Spring 组件&#xff0c;以便自动检测。用途&#xff1a;通常用于标注服务类或其他支持类。 Controller 描述&#xff1a;将类标记为 Spring MVC 控制器。用途&#xff1a;用于处理 Web 请求。 Service 描述&#xff1a;将类标记…

Ubuntu server 24 (Linux) AdGuard Home +SmartDNS 安装配置 搭建去广告快速DNS

一 SmartDNS 安装 &#xff0c;可参考&#xff1a;Ubuntu server 24 (Linux) 安装部署smartdns 搭建智能DNS服务器-CSDN博客 二 安装AdGuard 1 下载地址&#xff1a;GitHub - AdguardTeam/AdGuardHome: Network-wide ads & trackers blocking DNS server 2 解压安装 #下…

《Vue3 基础知识》Pinia 01 之 基础

Pinia 基础知识 前言 说明 本篇更倾向于 选项式 API 写法&#xff0c;因为项目是从 Vue2 升级至 Vue3&#xff0c;为更好且快速适配&#xff1b;Vue2 中&#xff0c;Vuex3 与 Pinia 不能一起使用。因为 Pinia 使用的是 Vuex3 现有接口&#xff1b;Vue3 中&#xff0c;Vuex4 …

基于FPGA的SM3加密算法优化(SM3加密算法三)

前文根据奇哥的方法使用FPGA实现了SM3加密算法&#xff0c;算法实现方式正确&#xff0c;但在并行度为2的情况下&#xff0c;在zynq7030ffg676-2也只能跑到50MHz&#xff0c;并行度为1也跑不到100MHz。 因此在了解原理的过程中&#xff0c;发现消息扩展和迭代过程其实可以全部放…

Kappa架构介绍

Kappa 架构是由 LinkedIn 的前首席工程师杰伊克雷普斯&#xff08;Jay Kreps&#xff09;提出的一种架构思想。克雷普斯是几个著名开源项目&#xff08;包括 Apache Kafka 和 Apache Samza 这样的流处理系统&#xff09;的作者之一。 Kappa &#xff0c;不同于Lambda同时计算流…

python的四个进度条

哈喽&#xff0c;我是快乐吗喽&#xff0c;今天简单的给大家介绍一下python的四个进度条工具&#xff0c;希望各位喜欢。 第一个进度条工具tqdm&#xff0c;好记点我叫她淘气大妈 安装tqdm库 pip install tqdm 基本用法 from tqdm import tqdm import timefor i in tqdm(ran…