1.嵌入式底层开发为什么选择C语言
1.从语言特点来说
①C语言有出色的可移植性,能在多种不同体系结构的软/硬平台上运行。
②简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和C语言汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效率更高。所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。
③C语言具有很高的运行效率。
2.嵌入式开发中的地位——开发工具
3.高级语言中的低级语言:面向过程VS面向对象
面向过程:
“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向过程其实是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想。
可以说面向过程是一种基础的方法,它考虑的是实际地实现。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。
面向对象:
面向对象的分析根据抽象关键的问题域来分解系统。面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成“现实世界”的对象。
面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。
面向过程和面向对象的区别:
以一个人从A地到B地为例,面向过程就是需要规划路线,了解路况,自己做好一系列的准备;而面向对象就是坐上一辆出租车,告诉司机我要去B地就可以了,不用关心其他的事情。
最后,C语言也有他自身的缺陷,比如代码的复用性差,代码的维护性差,扩展性(新增代码时不改变原来的代码)很差。
2.什么是实时性?硬件实时和软件实时?
实时嵌入式系统
实时操作系统(RTOS)设计成提供一个对真实世界的事件的及时响应(timely response)。出现在真实世界中的事件可能有一个时间限制(deadline),在此期限之前,实时/嵌入式系统必须确保在有限时间内对此事件做出相应的响应。根据相应事件的时间限制,嵌入式实时操作系统可以分为两类:
1、硬实时嵌入式系统
此类实时系统必须保证在一定的时间里,对一定的外部事件做出相应的响应,如果在一定时间里没有能够做出相应的响应,就会带来灾难性的后果,也即是说,此类系统对于时间的相应快慢有非常严格的要求,比如:电力监控系统等。
2、软实时嵌入式系统
此类实时系统保证在一定的时间里,对一定的外部事件做出相应的响应,但是如果在一定时间里没有能够做出相应的响应,不会带来灾难性的后果,只是给用户带来一些不快乐的体验,比如:用户界面的显示。
不同的系统,有不同实现方式,对于硬实时嵌入式系统,主要注重与实时性和可靠性,一般没有文件系统,虚拟内存管理等,主要用于实时监控等,典型的有:VxWorks,pSOS,uCOS-II等。软实时嵌入式系统注重实时性,也注重实用性,主要用于消费电子等,典型的有:嵌入式Linux。
3.Linux和UNIX之间的联系或者关系
Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件
另外两大区别:
1) UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.
2) UNIX是商业软件,而Linux是自由软件,免费、公开源代码的.
4.Linux主流的发行版有哪些 及特点
windows, macOS,linux是当今主流三大操作系统,普通用户一般是选择windows或macOS, linux主要是占据服务器领域市场。Linux系统又分为众多发行版本,下面对主要的几个发行版本进行比较。
Debian
Debian是菜鸟油服务器之前所采用的操作系统。Debian最早由Ian Murdock于1993年创建。可以算是迄今为止,最遵循GNU规范的Linux系统。Debian系统分为三个版本分支(branch):stable, testing 和 unstable。
Debian运行起来极其稳定,这使得它非常适合用于服务器。Debian平时维护三套正式的软件库和一套非免费软件库,这给另外几款发行版(比如Ubuntu和Kali等)带来了灵感。Debian这款操作系统派生出了多个Linux发行版。它有37500多个软件包,这方面唯一胜过Debian的其他发行版只有Gentoo。Debian使用apt或aptitude来安装和更新软件。
Debian这款操作系统无疑并不适合新手用户,而是适合系统管理员和高级用户。Debian支持如今的大多数架构(处理器)。
为何有如此多的用户痴迷于Debian呢?apt-get / dpkg是原因之一。dpkg是Debian系列特有的软件包管理工具,它被誉为所有Linux软件包管理工具(比如RPM)最强大的!配合apt-get,在Debian上安装、升级、删除和管理软件变得异常容易。许多Debian的用户都开玩笑的说,Debian将他们养懒了,因为只要简单得敲一下”apt-get upgrade && apt-get update”,机器上所有的软件就会自动更新了
Ubuntu
简单而言,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux操作系统。Ubuntu是一个相对较新的发行版,但是,它的出现可能改变了许多潜在用户对Linux的看法。也许,从前人们会认为Linux难以安装、难以使用,但是,Ubuntu出现后,这些都成为了历史。Ubuntu基于Debian Sid,Ubuntu拥有Debian的所有优点,包括apt-get。然而,不仅如此而已,Ubuntu默认采用的GNOME桌面系统也将Ubuntu的界面装饰的简易而不失华丽。
Ubuntu的安装非常的人性化,只要按照提示一步一步进行,安装和Windows同样简便!并且,Ubuntu被誉为对硬件支持最好最全面的Linux发行版之一,许多在其他发行版上无法使用,或者默认配置时无法使用的硬件,在Ubuntu上轻松搞定。并且,Ubuntu采用自行加强的内核(kernel),安全性方面更上一层楼。并且,Ubuntu默认不能直接root登陆,必须从第一个创建的用户通过su或sudo来获取root权限(这也许不太方便,但无疑增加了安全性,避免用户由于粗心而损坏系统)。Ubuntu的版本周期为六个月,弥补了Debian更新缓慢的不足。
CentOS
CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。有些人不想支付一大笔钱,又能领略红帽企业级Linux;对他们来说,CentOS值得一试。此外,CentOS的外观和行为似乎与母发行版红帽企业级Linux如出一辙。 CentOS使用YUM来管理软件包。非常稳定的程序包;谁要是想在桌面端测试一下服务器的运作原理,都应该试试这款操作系统。
Fedora
小巧的Fedora适合那些人:想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在成为企业级发行版之前,在该平台上进行开发和测试。Fedora是一款非常好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。Fedora同样使用YUM来管理软件包。
Red Hat
国内,乃至是全世界的Linux用户所最熟悉、最耳闻能详的发行版想必就是Red Hat了。Red Hat最早由Bob Young和Marc Ewing在1995年创建。而公司在最近才开始真正步入盈利时代,归功于收费的Red Hat Enterprise Linux(RHEL,Red Hat的企业版)。而正统的Red Hat版本早已停止技术支持,最后一版是Red Hat 9.0。于是,目前Red Hat分为两个系列:由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux,以及由社区开发的免费的Fedora Core。
5.有哪些虚拟机软件?特点?
介绍3种大家最常用的:
1.VirtualBox
它最早是德国一家软件公司InnoTek所开发的虚拟系统软件,后来被Sun收购,改名为Sun VirtualBox,性能有很大的提高,因为他是开源的,不同于VM,而且功能强大,可以在 Linux/Mac 和 Windows 主机中运行,并支持在其中安装 Windows (NT 4.0、2000、XP、Server 2003、Vista)、DOS/Windows 3.x、Linux (2.4 和 2.6)、OpenBSD 等系列的客户操作系统。假如你曾经有用过虚拟机软件的经历的话,相信使用 VirtualBox 不在话下。即便你是一个新手,也没有关系。VirtualBox 提供了详细的文档,可以助你在短期内入门。
2.VMware Workstation
不需要重开机就能在同一台电脑使用好几个OS。VMware主要的功能有:1.不需要分区或重开机就能在同一台PC上使用两种以上的操作系统。2.完全隔离并且保护不同OS的操作环境以及所有安装在OS上面的应用软件和资料。3.不同的OS之间还能互动操作,包括网络、周边、文件分享以及复制贴上功能。4.有复原(Undo)功能。5.能够设定并且随时修改操作系统的操作环境,如:内存、磁碟空间、周边设备等等。
3.Virtual PC
它能够让你在一台 PC 上同时运行多个操作系统,使用它你不用重新启动系统,只要点击鼠标便可以打开新的操作系统或是在操作系统之间进行切换。安装该软件后不用对硬盘进行重新分区或是识别,就能够非常顺利地运行你已经安装的多个操作系统,而且还能够使用拖放功能在几个虚拟 PC 之间共享文件和应用程序
6.如何解决使用userdel删除用户的问题(2种方法)
(1)使用vipw命令:
vipw 找到之前创建的用户,删除用户信息。
vipw -s 找到那个用户所属组,删除用户组信息。
(2)用 ps 查看该用户所有进程的pid,再将进程都 kill
7.罗列根目录中所有子目录的功能及存放类型
/bin:存放普通用户可执行的命令,系统中任何用户都可执行。
/boot:存放Linux内核文件以及开机菜单与开机所配置文件。
/dev:存放设备文件的存储目录,如硬盘、光驱等。
/etc:存放系统的配置文件,如用户账号密码、各种服务的起始文件等。只有root有权利修改。
/home:普通用户的主目录,每个用户在该目录下都有一个与用户同名的目录。
/lib:存放开机时用到的函数库,以及在/bin或/sbin下的命令会调用的函数库。
/media:存放可删除的设备,如软盘、光盘、DVD等设备都暂时挂载于此。
/mnt:暂时挂载某些额外的设备。
/opt:存放第三方软件。
/root:超级用户root的主目录。
/sbin:存放开机、修复、还原系统所需要的命令。
/srv:是一些网络服务启动之后,这些服务所需要取用的数据目录,如WWW服务。
/tmp:这是让一般用户或者正在执行的程序暂时放置文件的地方,任何人都能访问,需要定时清理。