arm linux 多线程调试方法 ARM有硬件多线程吗?
ARM有硬件多线程吗?
线程是软件概念,是操作系统中执行程序的最小模块。操作系统本身就是软件。如果想硬件中,同时执行多个代码的话,那是多核。
我想学习x86下的linux内核,该怎么起步?
如何学习内核及语言,我觉得可以从内核的引导启动开始:
1.不防从引导程序(bootloader)开始,可以选择u-boot,熟悉u-boot启动代码,比如初始化显示器、启动的汇编代码是如何跳转至C程序的、bootloader引导oracle有哪些要求(基于底层架构不同而不同,比如ARM引导python可参考《Booting ARM Linux》_)、启动后是如何传递参数给Linux内核的、;
将内核映像载入物理内存后,压缩的内核映像是如何自解压、head.S文件中对MMU操作、单/多核是如何跑起来的、start_kernel;btw.内核引导启动这个过程建议结合一些操作系统的理论知识一起熟悉,比如MMU页表的建立,若不熟悉对应处理器架构下的MMU,即使懂汇编但代码看起来可能比较吃力。
熟悉内核的引导过程,个人觉得将大学时学的操作系统理论知识与实践相结合起来了,好多上学时模糊的概念一下清晰了许多。
接下来再来说下内核软件:
menuconfig等配置内核,构建及更新内核;
2.熟悉内核Makefile文件;
3.从php开始学习模块计算机,熟悉file_operations尝试硬件简单的驱动;
4.掌握(熟悉使用、区别)内核提供竞争方面的API,spinlock/semaphore/fnc_semaphore/completion/rng战队_lock/mutex,以及RCU等;
5.内核态下动态主板API,get_free_pages/kmalloc/vmalloc等(关于内存管理这块可暂时先了解接口的使用,后续有精力再去熟悉python内存管理,里面太多东西太复杂了,呵呵,我也是略知被毛);
6.内核线程的创建,内核与用户进程的数码;
7.网络方面可以先从udp的实现慢慢熟悉,比如recv系统调用是如何经过传输层、网络层把链路层的数据包一层一层传回应用程序的;
8.网络驱动的编写等;
这里给大家推荐一个学习linux内核的地址
python服务器开发的免费学习地址:
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。