Linux核心Ubantu系统ROS开发环境 面试笔记

本文介绍Linux如何通过虚拟内存技术管理内存资源,确保每个进程拥有独立的4GB虚拟地址空间。此外,还介绍了进程调度策略,包括实时进程和普通进程的不同调度方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【源自各平台上面的摘抄】

1. Linux下怎么实现内存管理的?

Linux的基本组件
内核:它是Linux的核心组件,它充当软件和硬件之间的接口。
Shell:它充当用户和内核之间的接口。
GUI: 它代表图形用户界面,这是用户与系统交互的另一种方式。但这与图像,按钮,用于交互的文本框不同。
系统实用程序:这些是允许用户管理计算机的软件功能。
应用程序:旨在执行一组任务的一组功能。

为了充分利用和管理系统内存资源,Linux采用虚拟内存管理技术,利用虚拟内存技术让每个进程都有4GB 互不干涉的虚拟地址空间。

进程初始化分配和操作的都是基于这个「虚拟地址」,只有当进程需要实际访问内存资源的时候才会建立虚拟地址和物理地址的映射,调入物理内存页。

虚拟地址

【1】避免用户直接访问物理内存地址,防止一些破坏性操作,保护操作系统。
【2】每个进程都被分配了4GB的虚拟内存,用户程序可使用比实际物理内存更大的地址空间。4GB 的进程虚拟地址空间被分成两部分:「用户空间」和「内核空间」
在这里插入图片描述

用户空间

用户进程能访问的是「用户空间」,每个进程都有自己独立的用户空间,虚拟地址范围从从 0x00000000 至 0xBFFFFFFF 总容量3G 。

用户进程通常只能访问用户空间的虚拟地址,只有在执行内陷操作或系统调用时才能访问内核空间。

2. 怎么进行进程调度的?

进程(执行的程序)占用的用户空间按照「 访问属性一致的地址空间存放在一起 」的原则,划分成 5个不同的内存区域。 访问属性指的是“可读、可写、可执行等 。
linux进程分为实时进程(有实时需求的进程)和普通进程两种,实时进程的优先级高于普通进程,故优先执行实时进程。

实时进程的调度方式: 静态优先级策略+先进先出策略/轮转策略
系统调度时,首先执行静态优先级策略,会根据用户设定的静态优先级对实时进程进行排序,先执行优先级高的进程直到完毕,再执行优先级低的进程。当有数个实时进程的优先级相同时,有**先进先出策略(SCHED_FIFO)和轮转策略(SCHED_RR)**供用户选择。
若为先进先出策略,系统会根据进程出现在队列上的位置选择执行的顺序;若为轮转策略,系统会为实时进程分配时间片, 当一个时间片消耗完毕,就会执行下一个相同优先级的进程,如此循环往复,直到同优先级的所有进程执行完毕。

普通进程的调度方式: 动态优先级策略
系统调度时,会关注进程近一段时间内的表现(主要是睡眠时间和执行时间),再根据公式计算动态优先级,并严格按照动态优先级的高低顺序执行进程。其中,动态优先级是以静态优先级为基准进行计算的。若进程为交互式进程(如:桌面程序、服务器等),由于睡眠时间较长,对应的动态优先级也应该较高,当输入到来时能很快地被执行;若进程为批处理进程(如:编译程序),会较长时间处于可执行状态,可适当较低动态优先级,让系统先执行比较紧急的进程。

注意:进程一般默认为普通进程,将进程的策略设为SCHED_FIFO或SCHED_RR,可变为实时进程。

  1. 有哪些进程调度算法?
    Linux进程调度策略详解板

  2. 进程间通信方式有哪些?分别适用于什么场景?你觉得那种最高效?共享内存怎么实现的?
    参考链接 【Linux】面试常考—进程间通信

在这里插入图片描述

为了在Ubuntu20.04系统上配置ROS开发环境,你可以按照以下步骤进行操作。首先,确保你选择的ROS版本与Ubuntu20.04兼容。不同的ROS版本需要对应的Ubuntu版本,所以记得不要随意安装。你可以参考ROS官网(https://wiki.ros.org/ROS/Installation)上的详细指南来进行配置。 第一步是配置ROS软件源。你可以在终端中运行以下命令来添加ROS软件源: ``` sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' ``` 接下来,配置密钥以确保软件源的安全性。运行以下命令: ``` sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 ``` 然后,更新系统软件源以获取最新的软件包信息: ``` sudo apt update ``` 最后,你可以安装ROS。根据你选择的ROS版本,运行以下命令来安装ROS: ``` sudo apt install ros-noetic-desktop-full ``` 这样,你就成功地在Ubuntu20.04上配置了ROS开发环境。希望这个回答对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Ubuntu系统:为Qt配置ROS开发环境](https://download.csdn.net/download/ltstudying/11155539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ROS 笔记(01)— Ubuntu 20.04 ROS 环境搭建](https://blog.csdn.net/wohu1104/article/details/125271178)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值