小程一言 本操作系统专栏,是小程在学操作系统的过程中的第一步,是在学习操作系统的笔记的前提下,加上自己的心得,以及资料的搜集,共同整合而成。小程在学习过程中,难免疏漏,希望各位前辈批评指正。 用户线程是由用户空间的线程库实现的,操作系统并不直接支持,内核只知道整个进程,无法感知用户线程的存在。内核线程则是由操作系统内核管理的线程,操作系统可以直接对其进行调度和管理。 进程在操作系统中扮演着重要的角色,它是系统资源分配的基本单位,操作系统通过进程来管理系统资源的分配和调度。 调度 在操作系统中,调度(Scheduling)是指操作系统决定哪个进程在何时执行的过程。操作系统的调度器负责管理和调度系统中的进程,以确保系统资源的有效利用和进程之间的公平竞争。 2.** 引入超时机制**:规定哲学家在一定时间内没有成功拿到筷子就会放下已经拿到的筷子,避免死锁的发生。
CrashCourseComputerScience(2)-编程及操作系统 早期的编程方式 硬件编程方式的演变 1801年使用打孔卡的可编程织布机发明-->之后60年,程序员使用插线板编程-->1948 排序算法 冒泡算法 对于一个array=[a,b,c,d,e…z] 从index 0,1开始,不断对比相邻2个数的大小,如果array[n+1]>array[n],则2个数交换. n的数组氛围n个数组 22合并, 数组1和数组2合并,如果数组1的数据大于数组2,则新数组为[b,a],以此类推 在进行22合并,先对比2个数组index=0的数据,最小的数放在新数组0的位置, IC集成电路密度翻一番 因为光刻波长精度和量子隧穿效应,摩尔定律逐渐走向终结 18操作系统Operate System 操作系统OS拥有操作硬件的特殊权限,管理其他应用和程序,OS的目的让计算机自己运行 ,提高人机交互效率 操作系统充当软件和硬件之间的媒介,OS提供API抽象硬件:设备驱动程序 批处理: 1次给计算机多个任务,让计算机按顺序自动处理 多任务处理:1950s,Atlas计算机使用调度
或 su -:从普通用户切换成超级用户 Ctrl+D:退回普通用户 su/和su - 的区别: su/:目录不变,仅切换用户身份 su -:重新登录,路径变化到新用户的家目录 2. 二进制表示: r = 4 (100) w = 2 (010) x = 1 (001) 示例: rw- = 110(二进制)= 6(十进制) rw-rw-r-- = 664
00:00:05 [kthreadd] root 4 2 0 2021 ? 00:04:01 [ksoftirqd/0] root 7 2 0 2021 ? 号进程它的父进程也是 0 号,是 kthreadd 后面其他的进程都是由 1、2 号进程 fock 出来的 在 CMD 一列中,带有中括号 [] 的进程是内核态的进程,PPID 也就是父进程是 2 号进程 :进程就是一些数据结构 进程的数据结构 既然我们是学习操作系统,那么自然就应该从操作系统的角度去分析进程到底里面有些什么东西。 ,肯定需要一些手段,而信号就是手段,进程需要处理操作系统发给它的信号从而做出相对应的反应。
哈工大李治军操作系统听课笔记——2、打开操作系统 对于计算机的结构层次,很多学生还是只停留在操作系统有那些接口、如何使用这些接口,以做到更好地设计应用软件,但这些对于真正地掌握操作系统还是远远不够的 (通过这里我们也明白操作系统对汇编要求很高) 2、jmpi go,INITSEG: ? 3、读入setup模块后:ok_load_setup: ? 学习操作系统还是要具有一定的汇编基础,否则学习起来一旦涉及到汇编代码,基本就听不懂了qwq 如果想要学习汇编语言,这里推荐两个视频网址: 1: 汇编语言从0开始 重制版 自学必备 2:《零基础入门学习汇编语言
注意BIOS这部分大小是在1MB左右的,因为此时地址空间只有20位,所以 2^{20} bit即1MB可以用。 最后根据配置加载程序和操作系统内容。具体过程是: 之所以不能从BIOS里面直接读取系统的内核映像,是因为要先确定了磁盘上的文件系统(市面上的文件系统有很多种)才可以读取。 我们是直接预先约定好不需要知道文件系统的类型,就可以直接读取第一块数据,然后根据这些数据来识别磁盘上的文件系统,最后读取磁盘上的操作系统的内核映像并加载到内存。 最后提一下BIOS提供的功能和限制: 注意,在进入保护模式之后,即离开了实模式之后就不能使用BIOS了,也就没办法使用BIOS提供的功能,这时候如果需要使用这些功能就要操作系统自己想办法实现。 系统调用 系统调用是操作系统对上提供服务的接口。 上图为C程序的例子。 上图来自Daniel King的博客。
// Linux操作系统的2个小技巧 // 今天介绍2个Linux操作系统中常用的技巧,可能对大家有点帮助。 01 如何将一个前台程序切换到后台执行 日常工作中,我们执行Linux命令的时候,会遇到下面2个场景: 1、由于命令的运行时间很长,如果放在前台执行,当遇到secureCRT页面关闭或者连接会话断开的时候 2、又或者一个执行时间很长的程序,如果长时间没有执行完,又遇到了下班时间,你不想断开它,又着急走的时候。。。那种感觉,肯定大家都体会过。 今天来看如何进行切换: 1、使用ctrl+z键将运行中的程序停止; 2、使用jobs 命令查看当前停止的进程; 3、使用bg命令+【任务号】将这个进程在后台启动; 下面我们使用sleep这个命令做个实验 这种方法的使用步骤是: 1、首先你需要安装一个这样的包:yum -y install lrzsz, 2、然后直接通过拖拽文件到xshell或者secureCRT会话框中 3、选择zmodem的方法去传输文件
2、同步、异步、阻塞、非阻塞的概念。 同步:一个同步调用发出之后,调用者需要一直等待返回结果。有返回结果后,才能执行后续的操作。 2、面向记录的, 消息具有特定的格式以及优先级。 3、独立于发送与接收进程。进程终止时,消息队列及其内容不会被删除。 2、信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。 3、基于操作系统的PV操作,程序对信号量的操作都是原子操作。 2、避免死锁。 3、检测死锁。 4、解除死锁。 13、预防死锁的办法? 1、破坏请求条件:一次性分配所有资源,就不会再有请求了。 这是两种操作系统的运行状态。 内核态:处于内核态的CPU可以访问任意的数据,包括外围设备,比如网卡、硬盘等。
“ 并发和共享是操作系统最基本特性。” 操作系统的基本概念主要是在介绍操作系统是什么,到底要干嘛。它的功能是啥,由此来引出接下来要详细介绍的几个章节。其中操作系统的特征格外重要,大家要着重学习。 操作系统的概念 首先操作系统是一种计算机程序,它负责管理协调硬件、软件等计算机资源的工作,并且为上层用户、应用程序提供简单易用的服务。 因此,操作系统是处于硬件之上和应用软件之下的管理计算机硬件、软件等资源的系统软件。 操作系统的特征 并发 并发是操作系统最核心的灵魂。操作系统就是为了并发而生。 操作系统的功能和目标 资源的管理者 操作系统需要管理计算机的各种资源,处理器资源、存储器资源、文件资源、设备资源。分别对应后面的进程管理、内存管理、文件管理、IO管理。 而应用程序是建立在操作系统之上的,所以操作系统也是对对硬件机器的扩充,简称扩充机器。 如果这篇文章有帮助到您,可以给冷月一个关注或者点个赞白嫖一波
英伟达为Orion开发套件提供更加轻松的系统安装方式,下图提供两种操作流程: -上方路径:直接使用工厂出货时预安装的L4T BSP Image镜像; -下方路径:用PC上的SDK Manager进行操作系统刷机 同意授权:点选左下角“I accept the terms of thses licences”左边的框,然后点击右下角“Continue”按钮进行下一步; 2. 执行完系统配置之后,就会自动重启,然后进入Ubuntu 20.04 L4T(Linux for Tegra)桌面级操作系统,如同所有Ubuntu操作系统第一次登录时需要执行的步骤一样,都选择“Next” 这样就完成操作系统的配置,不过到目前为主,还未安装相关的开发环境,包括CUDA工具包、CUDNN/TensorRT库、OpenCV视觉库等等,因此下个步骤就是要为Orion开发套件安装完整的开发环境。
操作系统的特征 操作系统共有四个特征,分别是并发,共享,虚拟和异步。 其中,并发和共享是操作系统最基本的特征,且二者互为存在条件 并发 指两个或多个事件在同一时间间隔内发生,这些事件在宏观上是同时发生的,但微观上是交替发生的 与之相对应的重要概念就是“并行”,并行指两个或多个事件在同一时刻同时发生 对于操作系统来说,并发性是指计算机系统同时存在着多个运行程序 一个单核处理机(CPU)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行,使其在宏观上看起来是同时执行的 共享 共享即资源共享
大家好,又见面了,我是全栈君 MIT JOS lab2 首先把内存分布理清楚,由/boot/main.c可知这里把kernel的img的ELF header读入到物理地址0x10000处 这里能够回想JOS Make sure nextfree is kept aligned // to a multiple of PGSIZE. // // LAB 2: Your code here. pp_ref++; tlb_invalidate(pgdir,va); return 0; } Part 2: Virtual Memory 最终到part 2了…. 注意以下ULIM是分界线,ULIM以上是内核地址空间,以下是用户空间 这个页面布局代表的是启用地址转换以后,不管是操作系统还是用户程序,看到的虚拟内存布局,这也就是说,操 操 作系统和用户程序使用的是同一套页文件夹和页表 2GB physical memory.
1.基础概念 操作系统启动方式可以分为EFI/UEFI和BIOS. BIOS是传统的,UEFI后诞生,扩展性好一点。 我们定制镜像得把这两种都包含进去。 2.定制Centos redhat/oel同样适用。 inst.ks=cdrom:/isolinux/ks.cfg quiet #inst.stage2=hd:LABEL=Centos78DDCW #记住这个名字,打包成镜像的时候-V指定的就是这个名字 class gnu-linux --class gnu --class os { linuxefi /images/pxeboot/vmlinuz inst.stage2= class gnu-linux --class gnu --class os { linuxefi /images/pxeboot/vmlinuz inst.stage2=
2.装入时动态链接:编译后得到的一组模块先不链接成一个完整的装配模块,而是将这件事情推迟,在将每个模块装入内存时才做,每个模块边装入然后边链接,链接就是将各组模块的相对地址重新编址,而装入是实现逻辑地址到物理地址的转换
进程也可以说是一个任务, 是一种操作系统中非常重要的软件资源, 把一个可执行程序跑起来,系统中就会产生一个相对应的进程,如果这个程序结束了,那么相对应的进程也会被系统随之销毁, 因此,进程也可以被看作是可执行程序的 那么当我们双击可执行程序时,可以在电脑的任务管理器中找到这个运行程序,这个就是进程 把.exe 文件中的很多内容都加载到内存中了,分配一些资源,并开始执行这个可执行程序中包含的指令 进程也是操作系统中进行资源分配的最小单位 然后从链表上删掉,并且释放该资源 通过任务管理器查看到的所有的进程信息,本质上 就是在遍历内核中的这个链表,依次读取对应PCB的节点信息 PCB里面包含的信息有: 1.pid(进程id)进程的身份标识 2.
每个存储器独立编制、独立访问;独立的地址总线和数据总线,两个存储器对应两套独立 的地址总线和数据总线;并行执行提高速度 2、 嵌入式系统的硬件结构(1) 嵌入式微处理器是核心,它由控制器(控制单元)、运算器 3、 嵌入式系统软件(1-2) 嵌入式系统的软件是指应用在嵌入式系统中的各种软件,这些软件规模较小、开发难度大、实时性和可靠性要求高、要求固化存储。 嵌入式操作系统可分为硬件抽象层、操作系统层、应用支撑层、应用层。 硬件抽象层板级支持包BSP:主要的功能是给上层提供统一接口,同时屏蔽各种硬件底层的差异,以及提供操作系统的驱动、硬件初始化(加载bootloader)和驱动。 实现硬件有关性和操作系统无关性 嵌入式操作系统RTOS:能提供及时响应与高可靠性是主要特点,任务的调度目前主要有时间分片式、轮流查询式和优先抢占式三种大多数RTOS调度算法都是抢占方式(可剥夺方式)
一,什么是操作系统 二,Linux初识 1,Linux内核 三,虚拟机介绍
ROS2官方在线文档链接 ROS2 official online documentation:https://index.ros.org/doc/ros2/ ROS2教程文档使用说明与为什么选择ROS2 ROS2 tutorial documentation instructions and why choose ROS2? demos、navigation2 and moveit2 ROS2进阶学习路径 ROS2 advanced learning path: ? others ---- 学习分享从安装配置开始,首先详细介绍教程,然后是两个专题:Navigation2和MoveIt!2。 2.
桌面机器人:Desktop robot: Cozmo+ROS2:https://blog.csdn.net/ZhangRelay/article/details/93510762 ? cozmo ? web 空中机器人:Air robot: Tello+ROS2:https://blog.csdn.net/ZhangRelay/article/details/99291395 ? tello ?
/yunwei37/6.828-2018-labs 目录 MIT 6.828 操作系统工程 lab2 通关指南 目录 第1部分:物理页面管理 第2部分:虚拟内存 虚拟,线性和物理地址 引用计数 页表管理 kern/kclock.c 第1部分:物理页面管理 操作系统必须跟踪物理RAM的哪些部分空闲以及当前正在使用哪些部分,现在,您将编写物理页面分配器:它使用struct PageInfo对象的链接列表( newp) return NULL; newp->pp_ref++; *pde = page2pa(newp) | PTE_P | PTE_W | PTE_U; pgtab = page2kva 此操作系统可以支持的最大物理内存量是多少?为什么? 操作系统可能会将内核映射到低线性地址,而将线性地址空间的上部留给用户进程。