物联网工程实践实训 DAY1

一、嵌入式底层开发为什么选择C语言?

嵌入式开发是在操作系统内部做开发的,操作系统所有的内核几乎都是C语言编写,如果我们也使用C语言做开发,必定会具备一定的优势。

再者,C语言相较其他的高级编程语言,其所有的特点对于嵌入式开发软件是再合适不过的了。

C语言的特点如下:

 

  • C语言具有出色的可移植性,能在多种不同体系结构的软/硬件平台上运行。
  • C语言具有简洁紧凑、使用灵活的语法机制,并能直接访问硬件。
  • C语言具有很高的运行效率。


嵌入式软件一般需着重考虑三个方面:性能、安全性和开发效率(包括代码可移植性等)。

性能(运行效率)方面,汇编明显是最高的。但汇编在安全性和开发效率方面明显是最低的。所以除非是要求极端高性能的嵌入式平台(或者是系统实在是太简单而没办法支持高级语言),使用汇编语言的不多。我们一般进行初始化时会使用汇编语言。

而其它高级语言的运行效率一般比较低(C程序运行效率可达汇编的80%,而其它程序可能只有C程序的80%),源代码和目标代码也可能会比较长。这样占用的内存也会比较大。嵌入式开发的编程是要在开发板上跑的,占用内存的增多必然会影响性能。这样一来,C语言的优势就会凸现出来啦。

但是C语言也并不是完美无瑕的,它也是有一些缺点的。譬如:

 

  • 代码的复用性差
  • 代码的可扩展性差
  • 代码的维护性差

原文链接:https://blog.csdn.net/julia_jiang/article/details/52987569

 

二、什么是实时性,什么是硬实时,什么是软实时?

  1. 实时性:在规定时间内系统的反应能力.一般,有实时要求的应用有两个突出的特点:其中的活动时间性强,要求在一定的时刻和或一定的时间内自外部环境收集信息、再及时作出响应 ”。实时就是在规定的时间内必须正确地完成操作,完成操作的时间有操作系统的因素,也有用户软件的因素。非实时操作系统指操作系统无法保证哪怕是最高优先级任务开始执行的最后时限。

  2. 硬实时:某个外接部件在多长的时间里能够得到系统的反馈,得到CPU完成计算的时间,是可以得到保证的, 这也就是所谓的deterministic real time。 其实,真正的实时系统不仅需要硬件的支持,还需要专门的实时操作系统, 所以一般这种都是专门的设备,如工业自动化控制,军用电子设备等。它们的操作系统都是专门做的。

  3. 软实时:指的是在对非实时的操作系统,比如桌面计算机操作系统, 如Windows, 进行某些改动,来达到近乎实时的效果, 但是严格来说还不是真正的实时, 只是接近实时而已。它的做法是用一个专门的软件部件,代替桌面计算机操作系统中的进行控制的功能,如 process control 和 kernel,以达到一个接近于能够准时得到系统反馈和完成计算的反应速度。

三、Linux和Unix之间的关系?

Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件。这应该是他们最大的不同,这种不同体现在用户对前者有很高的自主权,而对后者却只能去被动的适应;这种不同还表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一个黑箱之中,只有相关的开发人员才能够接触的产品的原型。

  1. UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;
  2. UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。

四、Linux主流的发行版有哪些?主要特点分别是什么?

发行版

特点

PCLinuxOS PCLinuxOS的理念是秉承“简单易用,安全无忧”的理念,无需安装可直接运行于CD上,集成的程序丰富。不过LiveCD由于光盘的数据读取速度限制导致性能下降
Ubuntu Ubuntu 就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux操作系统。Ubuntu是一个相对较新的发行版,Ubuntu默认采用的GNOME桌面系统,如果你是一个KDE的拥护者的话,Kubuntu 同样适合你!Ubuntu的安装非常的人性化,只要按照提示一步一步进行,安装和Windows同样简便!并且,Ubuntu被誉为对硬件支持最好最全面  的Linux 发行版之一,许多在其他发行版上无法使用,或者默认配置时无法使用的硬件,在Ubuntu上轻松搞定。并且,Ubuntu采用自行加强的内核 (kernel),安全性方面更上一层楼。并且,Ubuntu默认不能直接root登陆,必须从第一个创建的用户通过su或sudo来获取root权限  (这也许不太方便,但无疑增加了安全性,避免用户由于粗心而损坏系统)。Ubuntu的版本周期为六个月,弥补了Debian更新缓慢的不足。而且具有人 气颇高的论坛提供优秀的资源和技术支持,固定的版本更新周期和技术支持,适于新手使用。是当前最流行的发行版之一。
openSUSE SUSE是Novell公司的著名Linux发行版,自主开发的专业,易用的YaST软件包管理系也大受好评。SUSE是一个非常专业、优秀的发行版,一向以华丽的用户界面著称。使用方便,也是当前最流行的版本之一,适于新手使用。
Fedora Red Hat分为两个系列:由Red  Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux(可用CentOS替代,是RHEL的克隆版,免费),以及由社区开发的免费的Fedora Core。FC的定位便是桌面用户。FC提供了最新的软件包,同时,它的版本更新周期也非常短,仅六个月。Fedora拥有数量庞大的用户,优秀的社区技  术支持,许多创新。是当前最流行的版本之一,适于新手使用
Debian Debian 是迄今为止,最遵循GNU规范的Linux系统。dpkg是Debian系列特有的软件包管理工具,它被誉为所有Linux软件包管理工具(比如RPM) 最强大的!配合apt-get,在Debian上安装、升级、删除和管理软件变得异常容易。Debian具有优秀的网络和社区资源,强大的apt- get,许多发行版都是基于Debian的,最有影响力的发行版之一。不过Debian安装相对不易,stable分支的软件极度过时,不适于新手使用。
Damn Small Damn Small Linux是一套非常小的(50M字节)可启动光盘的Linux发行版。尽管它的个头小,它努力成为一份可用并且易用的桌面。Damn Small Linux的桌面几乎是完整的一套,可进行简单媒体播放、FTP客户端、进行网页浏览、有简单的字处理及制表软件、可阅读电子邮件及pdf文件、文件管理 器、naim(支持 AIM、ICQ和IRC)、远程控制支持网络,宽带拨号及做服务器,还有一些简单小工具、系统监视软件、USB支持及PCMCIA支持。你可以安装到你的 硬盘上。由于所有的软件都是小巧型的,所以它对老旧的硬件会是一个很好的选择。可以运行在486的cpu及16M的内存中。是一个非主流的特色发行版,扩 展性较差,适于特殊用户使用,纯英文版。

Mandriva

Mandrake是基于Redhat的发行版。使用KDE,简化了安装系统。Mandrake在易用性方面的确是下了不少功夫,包括默认情况下的硬件检测等。具有友好的操作界面,图形配置工具,庞大的社区技术支持,是国际上比较有影响力的版本之一。不过部分版本bug较多

Slackware

Slackware是一个历史悠久的Linux发行版。其他主流发行版强调易用性的时候,他依然固执的追求最原始的效率——所 有的配置均还是要通过配置文件来进行。Slackware稳定、安全,所以有大批的忠实用户。由于尽量采用原版的软件包而不进行任何修改,所以制造新 bug的几率比较低。Slackware的版本更新周期较长。系统非常稳定、安全,并且高度坚持UNIX的规范;不过由于所有的配置均通过编辑文件来进 行,只适用于对linux非常熟悉的用户,而且自动硬件检测能力较差,不适于新手使用。

Puppy

Puppy Linux是一个十分小巧的 Linux 发行版,其ISO映像文件容量约为 100 MB 左右。正所谓“麻雀虽小,五脏俱全”。 在 Puppy Linux 中所包含的系统工具、网络软件、办公应用、影音娱乐可是都不或缺。Puppy Linux 不仅整个系统都可在内存中运行,而且还支持从各种存储介质启动运行,如优盘、光盘、硬盘等。与dsl linux相比puppy更完整,更容易汉化,不过需要的系统要求也更高、安装文件更大。适于一些较老的硬件,内存应在64M以上。

Gentoo Gentoo 具有高度的自定制性:因为它是一个基于源代码的(source-based)发行版。尽管安装时可以选择预先编译好的软件包,但是大部分使用Gentoo 的用户都选择自己手动编译。所以Gentoo适合比较有Linux使用经验的老手使用。但是注意的是,由于编译软件需要消耗大量的时间,所以如果你所有的  软件都自己编译,并安装桌面系统则需要较长的时间。GENTOO是一个极有特色的发行版,优点是具有高度的可定制性,完整的使用手册,媲美Ports的 Portage系统,运行速度极快,适合“臭美”的高手使用。也是现在比较流行的发行版之一。不过缺点也明显:编译时耗时很多,安装缓慢,只适用于熟悉linux的用户,不适于新手使用。
FreeBSD 这 里说明的是:FreeBSD不是一个Linux系统!但是FreeBSD的用户也相当多,其许多特性都与Linux相类似。FreeBSD作为服务器是相 当优秀的。同样的服务器硬件配置,运行同样的一个vBulletin论坛,FreeBSD所用的资源要比Linux少。网上许多的站点都是使用的 freebsd。除了作为服务器外,也可用于桌面用户。freebsd的优点:速度快,非常稳定,具有优秀的使用手册以及方便的Ports软件包管理系 统。缺点也明显:比起Linux而言对硬件的支持较差,作为桌面系统,软件的兼容性不佳。freebsd更适于服务器使用,而桌面一般是某些有需要的高手 使用。
Arch Arch Linux是针对i686优化的linux发行版。Arch 基本理念是快速、轻巧、弹性与简单。Arch 是为 i686 处理器优化的。相较于RedHat或是其他的Linux而言非常轻巧,而且简单的设计使他富有弹性。运行速度极快,是运行速度最快的几个发行版之一。其特 有的包管理是pacman,一个命令就让您升级整个系统,同时安装软件也非常方便。适于中级用户以上使用,不适于新手。
KNOPPIX Knoppix, 是一个基于Debian的发行版。Knoppix是一款LiveCD Linux,所谓的LiveCD就是整个操作系统都在一张光盘上,只要开机从光盘启动,就能拥有一个完整的Linux系统!无需安装!Knoppix也能  够非常轻松的安装到硬盘上。其强大的硬件检测能力、系统修复能力、即时压缩传输技术,都令人大加称赞。由于无需安装可直接运行于CD上,加上其优秀的硬件  检测能力,使它可作为系统急救盘使用,缺点也是由于光盘的数据读取速度限制导致性能下降。
Freespire Freespire 是一份由社区建设推动的、基于Linux的操作系统,它结合了免费与开源软件的优点(社区推动、免费发布、源码开放等),并在用户认为适当时为他们提供将  私有编码解码器、驱动程序和应用软件包括进来的选择。Freespire由Linspire赞助开发,后者是基于Debian GNU/Linux的面向桌面的商用发行版。Freespire将推出的Click-n-Run(CNR)服务,加入一个CNR外挂程序。使用者只需简单 点选,即可自动下载安装数千种开放源代码应用软件,也可以直接购买非免费软件。
Xandros Xandros 特点是极其简单的安装和使用,适合完全没有经验的新手,安装完以后就能立即投入使用,自带非常不错的工具所以定位于那些没有任何Linux使用经验的新 手,或是习惯使用Windows的用户。Xandros的标准版和增强版都是商业软件。不过可以下载到免费的公开发行版。
Magic Linux Magic linux是有国内社区制作的Linux发行套件。对中文的支持非常好,安装好不要配置什么就可以使用了。系統稳定性好,拥有国内Linux中最漂亮的界 面,以及丰富的应用软件,以及一流的中文支持和易用性。国内的linux发行版中最有特色的一个,对国内用户最值得推荐的国内Linux发行版。适用于新 手使用,国内比较流行。
LFS

LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些 生东西( raw code) 作成符合自己口味的菜肴──个、性

化的linux,不单单是个性的桌面。lfs最大的优势就是,安装LFS是菜鸟变成高手的捷径。适于高手或想深入学习 linix的用户。

红旗 Linux 国 内商业linux中有名的红旗Linux,红旗Linux在桌面领域主要致力于模仿 Windows的界面和使用方法,以吸引更多的Windows用户转入其中。虽然也是使用rpm的包管理体系,但安装软件可以使用类似Windows的向 导方式。国内比较流行。新手可以试用

Hiweed linux

Hiweed Linux基于Ubuntu Linux,适合中国的linux新手和老手使用。Hiweed桌面是一份已经配置好的中文桌面,安装后可直接使用,无需配置。Hiweed的目标是:免去新手的痛苦,节省老手的时间。适于新手使用。

新华Linux 新华Linux,也是国内一个商业公司的发行版。这是一个基于Debian的发行版。使用debian体系中默认的gnome。他的界面也以模仿linux为主。

五、有哪些虚拟机软件?它们有什么特点?

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 之间共享文件和应用程序。

六、如何解决使用userdel删除用户的问题?、

1.

物联网工程实践实训 DAY1_第1张图片

使用userdel 命令删除一个用户user1后,再次创建一个名为user1的用户会失败,显示已经存在

原因:使用userdel user1不能完全删除,此时重新添加用户,就会提示此目录已经存在。

解决的办法是先用find / -name "*liu*"找到残留的文件,然后使用rm -rf将残留的文件删除

所以删除用户的正确方法是 userdel -r 用户名  这样就能删除家目录及其所有文件

2、

Linux 删除用户出现提示userdel: user ** is currently logged in

创建新用户后,想删除,
使用 userdel  xx  删除,结果出现userdel: user xx   is currently logged in 的提示,其结果是无法删除,
可以使用  sudo userdel -r -f   username   给他强制删除,之后可能出现警告:
userdel: warning: can't remove /var/mail/wxt: No such file or directory
userdel: wxt home directory (/home/wxt) not found
这个不影响结果, /etc/shadow文件下的用户名和密码信息已经被删除掉了

原文链接:https://blog.csdn.net/chenyulancn/article/details/8032217

 

七、根目录下其他文件的作用及文件类型

/bin 系统由很多放置可执行文件的目录,但是bin目录比较特殊。因为bin目录下面放置的是在单用户维护模式下还能被操作的命令
在/bin下面的被root用户和一般的用户所使用,主要有cat、chmod、chown、date、mv、mkdir、cp、bash等。

/boot 这个目录主要放置开机能够使用到的文件,包括linux内核文件和开机菜单与开机所以需要的配置文件。


/dev 在linux中任何的设备和接口设备都是以文件的形式存在于这个目录当中。你只要到通过访问这个目录下的某个文件就相当于访问某个设备.

/etc 系统主要的配置文件几乎都放置在这个这个目录下面,例如人员的帐号密码文件,各种服务的起始文件等。一般来说,这个目录下面的各文件属性时可以让一般的用户查阅的,但是只有root用户有权先修改。FHS建议不要放置可执行的文件在这个目录下。

/home 这是系统默认的用户主文件夹(home directory),在你创建一个一般的账户的时候,默认用户的主文件夹都会规范到这里来。比较重要的是,主文件夹有两种代号:~代表当前这个用户的主文件夹

/lib 系统函数库非常的多,而/lib下面放置则是开机时会用到的数据库,以及在/bin和/sbin下命令会调用的函数库。

/media media是媒体的意思,顾名思义/media下面放置的就是可以删除的设备。包括软盘,光盘,dvd等都临时挂放在此。

/mnt 如果你想挂在额外的设备,一般建议可以放在这个目录下,在比较早的时候这个目录的用途和/media的作用相同,只是有了/media之后,这个目录就用来暂时挂在用了。

/opt 这个是给第三方软件放置的目录。不过,在以前的linux下我们喜欢放置在/usr/local下面。

/root 系统管理员的主文件夹。

/sbin 放在这下面为开机过程所需要的里面包括开机、修复、还原系统所需要的命令。

/src src可以视作service的缩写,是一些网络服务启动后,这些服务需要取用的数据目录,常见的服务例如www,ftp等。

/tmp 这是让一般的用户或者是正在执行的程序暂时放置文件的地方。

/proc 这个目录本身是一个虚拟文件系统,它放置的数据都是在内存当中,不占用硬盘的容量。

/sys 这个目录其实跟/proc非常的相似,也是一个虚拟的文件系统主要也是记录与内核相关的信息,不占用硬盘容量。

/usr 这里面放置的数据属于可分享的与不可变动的(shareable,static),其实usr是UNIX SOFTWARE RESOURCE的缩写,而非user的缩写,也就是unix操作系统软件放置的位置而非用户的数据。

/var 这个目录下面主要放置常态性变动的文件,包括cache,logfile以及某些软夹运营所产生的文件。例如MYSQL数据库文件等。

你可能感兴趣的:(物联网工程实践实训 DAY1)