首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    新人怎样学习嵌入式Linux?

    作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下。 在学习嵌入式Linux之前,肯定要有C语言基础。汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会)。C语言要学到什么程度呢?越熟当然越好,不熟的话也要具备基本技能。比如写一个数组排序、输入数字求和什么的。学C语言唯一的方法是多写程序多练习,编译出错没关系,自己去解决;执行出错没关系,自己去分析。以前我是用VC来练习C语言的,经常去尝试着写一些C语言竞赛的题目。它们是纯C、纯数学、纯逻辑的题目,不涉及界面这些东西,很适合煅炼你的编程能力。 回到主题,首先我们要明白你的目的是什么,大概来说所谓嵌入式Linux可以分为两部分:底层系统、应用开发。如果你是想做应用开发,那么你去把C语言、数据结构、JAVA什么的学好吧。嵌入式应用开发和PC上的应用开发并没有什么特别要注意的。也许你说在嵌入式上要做些优化,是的,要优化,但是未经优化的程序和PC上的程序开发没什么差别。另外,当你有能力去优化时,你已经不用来问这个问题了。具体到某个例子,比如说开发界面,在PC上我们用VC;在嵌入式Linux里也许我们用QT也许用Android,这个时候你应该去学学QT、Android的编程。但是基础还是C或JAVA,在此基础上去熟悉它们的接口。你学过VC的话,也是要花时间去了解那些类、控件的。

    01

    windows系统下安装linux(ubuntu)双系统

    windows系统下安装linux(ubuntu)双系统 原创程序员爱酸奶(QuellanAn) 最后发布于2018-03-09 13:41:13 阅读数 24907 收藏 展开 最近在找工作,很多面试要求上都写着熟悉linux系统,擅长shell编程,虽然在学校学过操作系统的课程,但是到现在出来工作,学的课程忘得也差不多了,并且那些linux命令不经常使用的话,还是很容易忘记的,以前也有一段时间想学学linux,但是一直没有狠下心来,总是在网站(实验楼https://www.shiyanlou.com/)上学习,但是那种其实很难坚持下来,在window系统上装过虚拟机,然后再虚拟机上装的ubuntu,但是相当于一个软件使用,使用起来是相当的卡,体验感太差,终于下定决心装一个linux系统了,不过感觉还是离不开windows系统,毕竟做java开发从学校到现在都是用window系统,怕一下子换了有点适应不过来,所以就装了一个双系统。 好了,废话不过说,直接开始,首先需要准备的东西: U盘(容量>8G)、UltraISO刻录软件、Ubuntu 镜像文件 1.U盘是做启动盘的,就像用老毛桃或大白菜把U盘制作成启动盘装window系统一样。最好3.0端口,比较快。 2.在电脑上下一个UltraISO软件,可以百度UltraISO(https://cn.ultraiso.net/xiazai.html 免费下载试用就可以了)第一个就可以。 3.ubuntu镜像文件,这个可以在官网上下载,我用的是ubuntu 15.10.你们可以选择自己想要的镜像文件就行网址:http://old-releases.ubuntu.com/releases/ (希望对你们有用)。

    02

    [linux][atop]atop的改进和在统计io上遇到的问题

    前言 互联网公司一般都会运行着几千到几万的服务器。一般的监控会采用类似ganglia/falcon类似的工具,在本地启动一个agent,把数据统计上报到集中式的服务器中,用来监控和分析系统的问题。 另外,有atop这样的工具,可以运行在服务器上,在本地写下record文件,atop命令本身也可以分析record文件,其中保存的数据的粒度更加细致,可以精确到线程级别,还有IPC,主频等等。 经验来看,atop每天生成的record文件大约500M左右,保存最近的一段时间,似乎也不是问题。用集中式的监控,配合上atop,对于问题分析来说,会有一些帮助。 分析 1,atop的改进 atop的代码量本身并不大,官方的代码在: https://github.com/Atoptool/atop.git 在使用atop的过程中,遇到了一些问题,作者也做了相应的修改: https://github.com/bytedance/atop 在bytedance-features分支上。作者把patch发送给maintainer,但是maintainer一直没有回复。在这里,列举一下改动的内容,如下。 2,smaps的优化 尝试使用smaps_rollup代替smaps,用来提高atop收集进程的PSS内存使用的效率。这个patch会在4.14上有所提升。一般情况下,建议在atop收集的时候不要加上-R选项。因为在atop读/proc/PID/smaps的时候,会walk整个PID进程的页表,期间会lock住内存页表的锁。如果在这期间PID进程发生了page fault,也需要lock,就会造成锁的进程。影响PID进程的性能。 3,数据破损问题 atop使用裸数据的方式保存record文件,其中包括三部分:raw record,就是头信息; scompbuf,是系统状态信息的数据; pcompbuf,是task级的状态信息数据,大小和task数量有关系。为了减小record文件的大小,对于 scompbuf和pcompbuf还采用了压缩。所以,数据必须完整的 rr,scompbuf,pcompbuf顺序写下去的,否则atop无法识别数据。 good case : ... rr,scompbuf,pcompbuf ... rr,scompbuf,pcompbuf ... bad case : ... rr,scompbuf[missing] ... rr,scompbuf,pcompbuf … 例如上面的例子,在写完rr,scompbuf之后,atop发生了crash,再重新启动,就会丢失后面的 pcompbuf,造成了整个record文件的不可用。 在patch中,作者使用writev进行写入数据,要么都写入成功,要么都写入不成功,用来防止这种case发生。 4,IPC造成的虚拟机性能抖动 IPC,instructions per cycle。可以用来衡量CPU运行的效率。通常是通过perf采集的数据。 提到perf,就要说明一下它的工作原理:intel的CPU上集成了PMU,用来采集硬件的信息。可以收集的硬件信息很多,可以通过perf list | grep Hardware来看。但是硬件的寄存器有数量限制,所以需要通过wrmsr指令告诉CPU收集哪些具体的事件,再通过rdpmc指令来读取对应的数据。 在虚拟化场景下,在虚拟机中使用PMU又复杂了一下,在虚拟机中执行wrmsr和rdpmc的时候,都需要虚拟机从none-root模式退出,影响了虚拟机的性能。 在patch中,作者让atop支持perfevents的配置,支持三种模式:enable模式,启用perf收集IPC。disable模式,禁用perf收集IPC。auto模式,在启动的时候,atop自动检查是否在虚拟机中运行,如果在虚拟机中,禁用;在物理级中,启用。默认是auto模式。 5,减小record文件 如果是大规格的服务器,40CPU,甚至到96CPU,通常运行大量的docker,里面运行了很多的task。其中很多task占用资源很少,但是依然会占用atop的record文件。 在patch中,支持了配置参数recordcputop & recordmemtop。用来配置收集cpu和内存的topN。其他的task可以忽略。作者测试线上的服务器36CPU, about 500 processes的场景,大约节省了40%的磁盘空间。 6,加速读record 一般在ganglia上看到系统抖动,例如下午三点十分,在对应的服务器上执行: atop -r / var/log/atop/atop_xxxx -b 15:10 如前文所述,因为rawrecord的原因,则会从头读到尾,直到匹配到对应的时间。对于log盘的使用,尤其是虚拟化场景,会限制IOPS。这

    02

    linux系统下是如何管理文件的?

    ----时间过得好快,不知不觉又到了周末了。记得上周发的文章,有前辈帮忙指出了一些需要改进的地方-----在手机上看代码不是很好,还有就是文章的字体比较小,看的比较累(这里非常感谢前辈们提出的不足之处),在往后我想把示例代码还是写到文章里,再把源码传到github上,感兴趣的朋友到时候可以去github上下载源代码看。好了,废话不多说,进入今天的主题-------linux系统如何管理文件系统?其实说到这里,记得在学校的时候,学过一段时间的文件管理,那个时候还是第一次接触linux,但是接触的是Linux运维方面的知识,学的很浅;通过这几天再次对文件管理的学习,让理解的更深,现在总结分享出来给大家:

    02

    Uefi安装Centos7出现错误以及解决方法

    写这篇就当是学习的笔记和总结。文笔不好有什么错别字或不通的地方大家多担待。 很少使用Linux系统,前段时间因工作需要,要在一台服务器上安装centos7,服务器默认的引导方式是Uefi,下载ISO镜像用UltraISO刻U盘后引导安装但是报错,进入dracut#命令行,当时完全是懵的一堆英文单字没几个认识。只能百度搜索出错原因和解决方法,以下就是网上说的方法和自己实践的总结。 先说下出错的原因:centos7镜像刻U盘后,u盘目录下:\EFI\BOOT\grub.cfg文件里的内容写的是u盘卷的信息(Linux下标签的信息)下面黄色字体 CentOS\x207\x20x86_64 应该写入U盘卷的信息,但是Win系统下fat32分区卷的信息只能写入11字符而且不可以有 \ 字符。还有最坑的是只能是大写,小写会自动变为大写。 这样就造成了U盘卷标信息和grub.cfg里的写的标签信息不一样。安装就会报错找不安装源。 menuentry ‘Install CentOS 7’ –class fedora –class gnu-linux –class gnu –class os { linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet initrdefi /images/pxeboot/initrd.img} menuentry ‘Test this media & install CentOS 7’ –class fedora –class gnu-linux –class gnu –class os { linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet initrdefi /images/pxeboot/initrd.img} submenu ‘Troubleshooting –>’ { menuentry ‘Install CentOS 7 in basic graphics mode’ –class fedora –class gnu-linux –class gnu –class os { linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 xdriver=vesa nomodeset quiet initrdefi /images/pxeboot/initrd.img } menuentry ‘Rescue a CentOS system’ –class fedora –class gnu-linux –class gnu –class os { linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rescue quiet initrdefi /images/pxeboot/initrd.img

    01
    领券