linux内核

Linux大页之复合页

独自空忆成欢 提交于 2021-02-09 06:03:25
大页的基础是复合页。在使用伙伴系统分配页时,如果指定了 GFP 标志 __GFP_COMP ,那么在分配到页后,会调用 prep_compound_page 将一组连续的页组合成一个复合页。 include/linux/gfp.h #define ___GFP_COMP 0x4000u #define __GFP_COMP ((__force gfp_t)___GFP_COMP) /* Add compound page metadata */ 对于复合页中的每个 page 描述符,都会设置 相应的 标志来让内核是首页还是尾页: include/linux/page-flags.h enum pageflags { #ifdef CONFIG_PAGEFLAGS_EXTENDED PG_head, /* A head page */ PG_tail, /* A tail page */ #else PG_compound, /* A compound page */ #endif PG_reclaim, /* To be reclaimed asap */ } 注意了,对于复合页的标志有两种情况: 1. CONFIG_PAGEFLAGS_EXTENDED 的情况: include/linux/page-flags.h #ifdef CONFIG_PAGEFLAGS_EXTENDED

根目录下README文档翻译

那年仲夏 提交于 2020-11-18 18:22:21
文件目录:/README 注:这是一个测试的,想让广大网友朋友们看一下是直白的翻译比较好,还是根据我自己的理解进行翻译,希望大家提出建议。同时在翻译中肯定会有一些错误,希望大家将错误指正出来,以完善中文文档。 正文: Linux kernel release 2.6.xx Linux内核2.6.xx发行版 These are the release notes for Linux version 2.6. Read them carefully, as they tell you what this is all about, explain how to install the kernel, and what to do if something goes wrong. 这些是linux2.6版本的发行文档。认真的阅读他们,因为他们能够告诉你这些都是关于什么的,并向您解释如何安装内核和如果出错了应该如何去做。 WHAT IS LINUX? 什么是LINUX? Linux is a Unix clone written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX compliance.

malloc()和calloc()

痞子三分冷 提交于 2020-11-17 07:15:46
malloc()和calloc() 进程对动态内存的请求被认为是不紧迫的。例如,当进程的可执行文件被装入时,进程并不一定立即对所有的代码进行访问。类似地,当进程调用malloc() 请求动态内存时,并不意味着进程很快就会访问所有获得的内存。因此一般来说,内核总是尽量推迟给用户态进程动态分配内存。 The kernel succeeds in deferring the allocation of dynamic memory to processes by using a new kind of resource. When a User Mode process asks for dynamic memory, it doesn't get additional page frames; instead, it gets the right to use a new range of linear addresses, which become part of its address space. This interval is called a "memory region." 内核使用一种资源成功实现了对进程动态内存的推迟分配。当用户态进程请求动态内存时,并没有获得请求的页框,而仅仅获得对一个新的线性地址区的使用权,而这一线性地址区间就成为进程地址空间的一部分

什么是嵌入式开发?嵌入式是什么?初学者必看。

人走茶凉 提交于 2019-12-01 21:41:21
嵌入式技术是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统技术。它最初起源于单片机技术, 是各类数字化的电子、机电产品的核心,主要用于实现对硬件设备的控制、监视或管理等功能。进入21世纪计算机应用的各行各业中90%左右的开发将涉及到嵌入式开发。全球嵌入式软件市场年增长率超过12.5%,嵌入式系统带来的工业年产值达一万亿美无,中国未来三年嵌入式软件产业将保持40%以上的年复合增长率。 做软件实际上有高下之分,开发语言从机器语言、汇编到C、C++,再到红透半边天的Java、C#等,该学哪种呢?为什么有些开发者工资低,而有些开发者千金难求?为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要10k的薪水? 还是门槛,比如月薪15k的Linux嵌入式开发职位,门槛就有 Linux系统、Shell编程、Linux开发环境、C语言、ARM硬件平台、数据结构、Linux内核、驱动程序等,粗略数数就有8道关口,他需要非常熟悉整个的计算机体系,能做出实际的产品,而Java的开发者却仅仅是会使用名叫Java的语言工具,始终高高飘在众多层次之上,开发项目非常快,甚至可以不知道OSI模型,很可能自始至终都是软件蓝领。 嵌入式开发本身也有高下之分

android自学笔记《三》——系统架构分析

≡放荡痞女 提交于 2019-11-30 08:37:20
下面是Android的系统架构 图 翻译后 从上图中可以看出,Android系统架构为 4 层结构 ,从上层到下层分别是 应用程序层、 应用程序框架层 、 系统运行库层 以及 Linux内核层 ,分别介绍如下: 1) 应用程序层 Android 平台不仅仅是操作系统,也包含了许多应用程序,诸如 SMS 短信客户端程序、电话拨号程序、图片浏览器、 Web 浏览器等应用程序。 这些应用程序都是用 Java 语言编写的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换, 这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个 性化。 2) 应用程序框架层 应用程序框架层是我们从事 Android 开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,该层简化了组件的重用,开发人员可以直接使用其提供的组件来进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。 a) Activity Manager (活动管理器) 管理各个应用程序生命周期以及通常的导航回退功能 b) Window Manager (窗口管理器) 管理所有的窗口程序 c) Content Provider (内容提供器) 使得不同应用程序之间存取或者分享数据 d) View System (视图系统) 构建应用程序的基本组件 e) Notification Manager( 通告管理器 )