android驱动开发第三、四章读书笔记

第三章讲解了git及git操作的基本命令

1.git是一款免费、开源的分布式版本控制系统,符合linux的开源思想,且相对于svn

cvs等,git有自己的优势,且广受开发者欢迎

2.git的安装:

apt-get install git

apt-get install git-doc git-svn apt-get install git-email git-gui gitk

3.常见命令:

man git—checkout   /  git help git-checkout    查看git文档

git init 创建版本库

git commit 文件提交到版本库

git branch 创建版本分支

git branch new-branch 创建新分支

git checkout new branch切换到新的分支

4.在github上创建开源项目

1.注册登陆

2.常见命令:

git push 上传源代码到github上

git clone 复制项目仓库源代码到本地上

实战:

mac下  GitHub 账户访问添加 SSH keys

1. ssh-keygen -t rsa -C "[email protected]"

此时要求输入密码,该密码是ssh的密码,需要你创建,

生成了ssh key

2.该操作是为了以后不用每次都输入ssh的密码

eval "$(ssh-agent -s)”

windows下只需要输入括号里面的

ssh-add ~/.ssh/id_rsa

3.添加key去github

用vim打开,复制内容

vim ~/.ssh/id_rsa.pub

4.粘贴密钥到github

5.验证该key

ssh -T [email protected]

第四章

主要结合第三章git进行实战,对源代码进行下载和编译,首先要下载源代码,android的源代码是基于linux内核进行修改而成的,本章所说的编译是对修改后的源代码进行编译,并不是linux内核。

一、配置android的源代码下载环境:

1.创建存放脚本的文件(repo):

mkdir ~/bin

PATH=~/bin:$PATH

2.下载repo脚本文件(下载android源代码):

curl  https://dl-ssl-google.com/googlesource/git-repo/repo > -/bin/repo

chmod a+x ~/bin/repo

3.创建用于存放android源代码目录:

mkdir android_source

cd android_source

4.初始化:

repo init -u https://android.googlesource.com/platform/mainfest

5.下载源码:

repo sync

android目录解析:

了解了各个目录的作用,并查阅了一些资料做了补充:

Android 4.0

|-- Makefile

|-- bionic (bionic C库)

|-- bootable (启动引导相关代码)

|-- build (存放系统编译规则及generic等基础开发包配置)

|-- cts (Android兼容性测试套件标准)

|-- dalvik (dalvik JAVA虚拟机)

|-- development (应用程序开发相关)

|-- external (android使用的一些开源的模组)

|-- frameworks (核心框架——java及C++语言)

|-- hardware (部分厂家开源的硬解适配层HAL代码)

|-- out (编译完成后的代码输出与此目录)

|-- packages (应用程序包)

|-- prebuilt (x86和arm架构下预编译的一些资源)

|-- sdk (sdk及模拟器)

|-- system (底层文件系统库、应用及组件——C语言)

`-- vendor (厂商定制代码)

bionic 目录

|-- libc (C库)

| |-- arch-arm (ARM架构,包含系统调用汇编实现)

| |-- arch-x86 (x86架构,包含系统调用汇编实现)

| |-- bionic (由C实现的功能,架构无关)

| |-- docs (文档)

| |-- include (头文件)

| |-- inet (?inet相关,具体作用不明)

| |-- kernel (Linux内核中的一些头文件)

| |-- netbsd (?nesbsd系统相关,具体作用不明)

| |-- private (?一些私有的头文件)

| |-- stdio (stdio实现)

| |-- stdlib (stdlib实现)

| |-- string (string函数实现)

| |-- tools (几个工具)

| |-- tzcode (时区相关代码)

| |-- unistd (unistd实现)

| `-- zoneinfo (时区信息)

|-- libdl (libdl实现,dl是动态链接,提供访问动态链接库的功能)

|-- libm (libm数学库的实现,)

| |-- alpha (apaha架构)

| |-- amd64 (amd64架构)

| |-- arm (arm架构)

| |-- bsdsrc (?bsd的源码)

| |-- i386 (i386架构)

| |-- i387 (i387架构?)

| |-- ia64 (ia64架构)

| |-- include (头文件)

| |-- man (数学函数,后缀名为.3,一些为freeBSD的库文件)

| |-- powerpc (powerpc架构)

| |-- sparc64 (sparc64架构)

| `-- src (源代码)

|-- libstdc++ (libstdc++ C++实现库)

| |-- include (头文件)

| `-- src (源码)

|-- libthread_db (多线程程序的调试器库)

| `-- include (头文件)

`-- linker (动态链接器)

`-- arch (支持arm和x86两种架构)

bootable 目录

.

|-- bootloader (适合各种bootloader的通用代码)

| `-- legacy (估计不能直接使用,可以参考)

| |-- arch_armv6 (V6架构,几个简单的汇编文件)

| |-- arch_msm7k (高通7k处理器架构的几个基本驱动)

| |-- include (通用头文件和高通7k架构头文件)

| |-- libboot (启动库,都写得很简单)

| |-- libc (一些常用的c函数)

| |-- nandwrite (nandwirte函数实现)

| `-- usbloader (usbloader实现)

|-- diskinstaller (android镜像打包器,x86可生产iso)

`-- recovery (系统恢复相关)

|-- edify (升级脚本使用的edify脚本语言)

|-- etc (init.rc恢复脚本)

|-- minui (一个简单的UI)

|-- minzip (一个简单的压缩工具)

|-- mtdutils (mtd工具)

|-- res (资源)

| `-- images (一些图片)

|-- tools (工具)

| `-- ota (OTA Over The Air Updates升级工具)

`-- updater (升级器)

build目录

.

|-- core (核心编译规则)

|-- history (历史记录)

|-- libs

| `-- host (主机端库,有android “cp”功能替换)

|-- target (目标机编译对象)

| |-- board (开发平台)

| | |-- emulator (模拟器)

| | |-- generic (通用)

| | |-- idea6410 (自己添加的)

| | `-- sim (最简单)

| `-- product (开发平台对应的编译规则)

| `-- security (密钥相关)

`-- tools (编译中主机使用的工具及脚本)

|-- acp (Android "acp" Command)

|-- apicheck (api检查工具)

|-- applypatch (补丁工具)

|-- apriori (预链接工具)

|-- atree (tree工具)

|-- bin2asm (bin转换为asm工具)

|-- check_prereq (检查编译时间戳工具)

|-- dexpreopt (模拟器相关工具,具体功能不明)

|-- droiddoc (?作用不明,java语言,网上有人说和JDK5有关)

|-- fs_config (This program takes a list of files and directories)

|-- fs_get_stats (获取文件系统状态)

|-- iself (判断是否ELF格式)

|-- isprelinked (判断是否prelinked)

|-- kcm (按键相关)

|-- lsd (List symbol dependencies)

|-- releasetools (生成镜像的工具及脚本)

|-- rgb2565 (rgb转换为565)

|-- signapk (apk签名工具)

|-- soslim (strip工具)

`-- zipalign (zip archive alignment tool)

dalvik目录 dalvik虚拟机

.

|-- dalvikvm (main.c的目录)

|-- dexdump (dex反汇编)

|-- dexlist (List all methods in all concrete classes in a DEX file.)

|-- dexopt (预验证与优化)

|-- docs (文档)

|-- dvz (和zygote相关的一个命令)

|-- dx (dx工具,将多个java转换为dex)

|-- hit (?java语言写成)

|-- libcore (核心库)

|-- libcore-disabled (?禁用的库)

|-- libdex (dex的库)

|-- libnativehelper (Support functions for Android‘s class libraries)

|-- tests (测试代码)

|-- tools (工具)

`-- vm (虚拟机实现)

development 目录 (开发者需要的一些例程及工具)

|-- apps (一些核心应用程序)

| |-- BluetoothDebug (蓝牙调试程序)

| |-- CustomLocale (自定义区域设置)

| |-- Development (开发)

| |-- Fallback (和语言相关的一个程序)

| |-- FontLab (字库)

| |-- GestureBuilder (手势动作)

| |-- NinePatchLab (?)

| |-- OBJViewer (OBJ查看器)

| |-- SdkSetup (SDK安装器)

| |-- SpareParts (高级设置)

| |-- Term (远程登录)

| `-- launchperf (?)

|-- build (编译脚本模板)

|-- cmds (有个monkey工具)

|-- data (配置数据)

|-- docs (文档)

|-- host (主机端USB驱动等)

|-- ide (集成开发环境)

|-- ndk (本地开发套件——c语言开发套件)

|-- pdk (Plug Development Kit)

|-- samples (例程)

| |-- AliasActivity (?)

| |-- ApiDemos (API演示程序)

| |-- BluetoothChat (蓝牙聊天)

| |-- BrowserPlugin (浏览器插件)

| |-- BusinessCard (商业卡)

| |-- Compass (指南针)

| |-- ContactManager (联系人管理器)

| |-- CubeLiveWallpaper (动态壁纸的一个简单例程)

| |-- FixedGridLayout (像是布局)

| |-- GlobalTime (全球时间)

| |-- HelloActivity (Hello)

| |-- Home (Home)

| |-- JetBoy (jetBoy游戏)

| |-- LunarLander (貌似又是一个游戏)

| |-- MailSync (邮件同步)

| |-- MultiResolution (多分辨率)

| |-- MySampleRss (RSS)

| |-- NotePad (记事本)

| |-- RSSReader (RSS阅读器)

| |-- SearchableDictionary (目录搜索)

| |-- SimpleJNI (JNI例程)

| |-- SkeletonApp (空壳APP)

| |-- Snake (snake程序)

| |-- SoftKeyboard (软键盘)

| |-- Wiktionary (?维基)

| `-- WiktionarySimple(?维基例程)

|-- scripts (脚本)

|-- sdk (sdk配置)

|-- simulator (?模拟器)

|-- testrunner (?测试用)

`-- tools (一些工具)

external 目录

.

|-- aes (AES加密)

|-- apache-http (网页服务器)

|-- astl (ASTL (Android STL) is a slimmed-down version of the regular C++ STL.)

|-- bison (自动生成语法分析器,将无关文法转换成C、C++)

|-- blktrace (blktrace is a block layer IO tracing mechanism)

|-- bluetooth (蓝牙相关、协议栈)

|-- bsdiff (diff工具)

|-- bzip2 (压缩工具)

|-- clearsilver (html模板系统)

|-- dbus (低延时、低开销、高可用性的IPC机制)

|-- dhcpcd (DHCP服务)

|-- dosfstools (DOS文件系统工具)

|-- dropbear (SSH2的server)

|-- e2fsprogs (EXT2文件系统工具)

|-- elfcopy (复制ELF的工具)

|-- elfutils (ELF工具)

|-- embunit (Embedded Unit Project)

|-- emma (java代码覆盖率统计工具)

|-- esd (Enlightened Sound Daemon,将多种音频流混合在一个设备上播放)

|-- expat (Expat is a stream-oriented XML parser.)

|-- fdlibm (FDLIBM (Freely Distributable LIBM))

|-- freetype (字体)

|-- fsck_msdos (dos文件系统检查工具)

|-- gdata (google的无线数据相关)

|-- genext2fs (genext2fs generates an ext2 filesystem as a normal (non-root) user)

|-- giflib (gif库)

|-- googleclient (google用户库)

|-- grub (This is GNU GRUB, the GRand Unified Bootloader.)

|-- gtest (Google C++ Testing Framework)

|-- icu4c (ICU(International Component for Unicode)在C/C++下的版本)

|-- ipsec-tools (This package provides a way to use the native IPsec functionality )

|-- iptables (防火墙)

|-- jdiff (generate a report describing the difference between two public Java APIs.)

|-- jhead (jpeg头部信息工具)

|-- jpeg (jpeg库)

|-- junit (JUnit是一个Java语言的单元测试框架)

|-- kernel-headers (内核的一些头文件)

|-- libffi (libffi is a foreign function interface library.)

|-- libpcap (网络数据包捕获函数)

|-- libpng (png库)

|-- libxml2 (xml解析库)

|-- mtpd (一个命令)

|-- netcat (simple Unix utility which reads and writes dataacross network connections)

|-- netperf (网络性能测量工具)

|-- neven (看代码和JNI相关)

|-- opencore (多媒体框架)

|-- openssl (SSL加密相关)

|-- openvpn (VPN开源库)

|-- oprofile (OProfile是Linux内核支持的一种性能分析机制。)

|-- ping (ping命令)

|-- ppp (pppd拨号命令,好像还没有chat)

|-- proguard (Java class file shrinker, optimizer, obfuscator, and preverifier)

|-- protobuf (a flexible, efficient, automated mechanism for serializing structured data)

|-- qemu (arm模拟器)

|-- safe-iop (functions for performing safe integer operations )

|-- skia (skia图形引擎)

|-- sonivox (sole MIDI solution for Google Android Mobile Phone Platform)

|-- speex (Speex编/解码API的使用(libspeex))

|-- sqlite (数据库)

|-- srec (Nuance 公司提供的开源连续非特定人语音识别)

|-- strace (trace工具)

|-- svox (Embedded Text-to-Speech)

|-- tagsoup (TagSoup是一个Java开发符合SAX的HTML解析器)

|-- tcpdump (抓TCP包的软件)

|-- tesseract (Tesseract Open Source OCR Engine.)

|-- tinyxml (TinyXml is a simple, small, C++ XML parser)

|-- tremor (I stream and file decoder provides an embeddable,integer-only library)

|-- webkit (浏览器核心)

|-- wpa_supplicant (无线网卡管理)

|-- xmlwriter (XML 编辑工具)

|-- yaffs2 (yaffs文件系统)

`-- zlib (a general purpose data compression library)

frameworks 目录 (核心框架——java及C++语言)

.

|-- base (基本内容)

| |-- api (?都是xml文件,定义了java的api?)

| |-- awt (AWT库)

| |-- build (空的)

| |-- camera (摄像头服务程序库)

| |-- cmds (重要命令:am、app_proce等)

| |-- core (核心库)

| |-- data (字体和声音等数据文件)

| |-- docs (文档)

| |-- graphics (图形相关)

| |-- include (头文件)

| |-- keystore (和数据签名证书相关)

| |-- libs (库)

| |-- location (地区库)

| |-- media (媒体相关库)

| |-- obex (蓝牙传输库)

| |-- opengl (2D-3D加速库)

| |-- packages (设置、TTS、VPN程序)

| |-- sax (XML解析器)

| |-- services (各种服务程序)

| |-- telephony (电话通讯管理)

| |-- test-runner (测试工具相关)

| |-- tests (各种测试)

| |-- tools (一些叫不上名的工具)

| |-- vpn (VPN)

| `-- wifi (无线网络)

|-- opt (可选部分)

| |-- com.google.android (有个framework.jar)

| |-- com.google.android.googlelogin (有个client.jar)

| `-- emoji (standard message elements)

`-- policies (Product policies are operating system directions aimed at specific uses)

`-- base

|-- mid (MID设备)

`-- phone (手机类设备,一般用这个)

hardware 目录 (部分厂家开源的硬解适配层HAL代码)

|-- broadcom (博通公司)

| `-- wlan (无线网卡)

|-- libhardware (硬件库)

| |-- include (头文件)

| `-- modules (Default (and possibly architecture dependents) HAL modules)

| |-- gralloc (gralloc显示相关)

| `-- overlay (Skeleton for the "overlay" HAL module.)

|-- libhardware_legacy (旧的硬件库)

| |-- flashlight (背光)

| |-- gps (GPS)

| |-- include (头文件)

| |-- mount (旧的挂载器)

| |-- power (电源)

| |-- qemu (模拟器)

| |-- qemu_tracing (模拟器跟踪)

| |-- tests (测试)

| |-- uevent (uevent)

| |-- vibrator (震动)

| `-- wifi (无线)

|-- msm7k (高通7k处理器开源抽象层)

| |-- boot (启动)

| |-- libaudio (声音库)

| |-- libaudio-qsd8k (qsd8k的声音相关库)

| |-- libcamera (摄像头库)

| |-- libcopybit (copybit库)

| |-- libgralloc (gralloc库)

| |-- libgralloc-qsd8k (qsd8k的gralloc库)

| |-- liblights (背光库)

| `-- librpc (RPC库)

|-- ril (无线电抽象层)

| |-- include (头文件)

| |-- libril (库)

| |-- reference-cdma-sms (cdma短信参考)

| |-- reference-ril (ril参考)

| `-- rild (ril后台服务程序)

`-- ti (ti公司开源HAL)

|-- omap3 (omap3处理器)

| |-- dspbridge (DSP桥)

| |-- libopencorehw (opencore硬件库)

| |-- liboverlay (overlay硬件库)

| |-- libstagefrighthw (stagefright硬件库)

| -- omx (omx组件)

-- wlan (无线网卡)

packages 目录

.

|-- apps (应用程序库)

| |-- AlarmClock (闹钟)

| |-- Bluetooth (蓝牙)

| |-- Browser (浏览器)

| |-- Calculator (计算器)

| |-- Calendar (日历)

| |-- Camera (相机)

| |-- CertInstaller (在Android中安装数字签名,被调用)

| |-- Contacts (拨号(调用)、联系人、通话记录)

DeskClock (桌面时钟)

Email (Email)

Gallery (相册,和Camera类似,多了列表)

Gallery3D (?3D相册)

GlobalSearch (为google搜索服务,提供底层应用)

GoogleSearch (google搜索)

HTMLViewer (浏览器附属界面,被浏览器应用调用,同时提供存储记录功能)

IM (即时通讯,为手机提供信号发送、接收、通信的服务)

Launcher (登陆启动项,显示图片框架等等图形界面)

Launcher2 (登陆启动项,负责应用的调用)

Mms (?彩信业务)

Music (音乐播放器)

PackageInstaller (安装、卸载程序的响应)

Phone (电话拨号程序)

Provision (预设应用的状态,使能应用)

Settings (开机设定,包括电量、蓝牙、设备信息、界面、wifi等)

SoundRecorder (录音机,可计算存储所需空间和时间)

Stk (接收和发送短信)

Sync (空) -------○1

Updater (空)

VoiceDialer (语音识别通话)

inputmethods (输入法)

LatinIME (拉丁文输入法)

OpenWnn (OpenWnn输入法)

PinyinIME (拼音输入法)

providers (提供器,提供应用程序、界面所需的数据)

ApplicationsProvider (应用程序提供器,提供应用程序启动项、更新等)

CalendarProvider (日历提供器)

ContactsProvider (联系人提供器)

DownloadProvider (下载管理提供器)

DrmProvider (创建和更新数据库时调用)

GoogleContactsProvider (联系人提供器的子类,用以同步联系人)

GoogleSubscribedFeedsProvider(设置信息提供器)

ImProvider (空)

ManagementProvider (空)

MediaProvider (媒体提供器,提供存储数据)

TelephonyProvider (彩信提供器)

UserDictionaryProvider (用户字典提供器,提供用户常用字字典)

WebSearchProvider (空)

services

EasService (空)

LockAndWipe (空)

wallpapers (墙纸)

Basic (基本墙纸,系统内置墙纸)

LivePicker (选择动态壁纸)

MagicSmoke (壁纸特殊效果)

MusicVisualization (音乐可视化,图形随音乐而变化)

○1里面有一个隐藏的.git文件夹,内容都是一样的,没有有意义的代码,config看似乎是一个下载程序,因此认为这些文件夹下没有实质东西。

prebuilt 目录 (x86和arm架构下预编译的一些资源)

.

android-arm (arm-android相关)

gdbserver (gdb调试器)

kernel (模拟的arm内核)

android-x86 (x86-android相关)

kernel (空的)

common (通用编译好的代码,应该是java的)

darwin-x86 (drawin x86平台)

darwin-x86_64 (drawin x86 64bit平台)

linux-x86 (linux x86平台)

toolchain (工具链,我们应该主要用这个)

arm-eabi-4.2.1

arm-eabi-4.3.1

arm-eabi-4.4.0

i686-unknown-linux-gnu-4.2.1 (x86版编译器)

|-- linux-x86_64 (linux x86 64bit平台)

windows (windows平台)

windows-x86_64 (64bit windows平台)

system 目录 (底层文件系统库、应用及组件——C语言)

Bluetooth (蓝牙相关)

core (系统核心工具盒接口)

adb (adb调试工具)

debuggerd (调试工具)

fastboot (快速启动相关)

include (系统接口头文件)

init (init程序源代码)

libacc (轻量级C编译器)

libctest (libc测试相关)

libcutils (libc工具)

liblog (log库)

libmincrypt (加密库)

libnetutils (网络工具库)

libpixelflinger (图形处理库)

libsysutils (系统工具库)

libzipfile (zip库)

logcat (查看log工具)

logwrapper (log封装工具)

mkbootimg (制作启动boot.img的工具盒脚本)

netcfg (网络配置netcfg源码)

nexus (google最新手机的代码)

rootdir (rootfs,包含一些etc下的脚本和配置)

sh (shell代码)

toolbox (toolbox,类似busybox的工具集)

vold (SD卡管理器)

extras (额外工具)

latencytop (a tool for software developers ,identifying system latency happen)

libpagemap (pagemap库)

librank (Java Library Ranking System库)

procmem (pagemap相关)

procrank (Java Library Ranking System相关)

showslab (showslab工具)

sound (声音相关)

su (su命令源码)

tests (一些测试工具)

timeinfo (时区相关)

wlan (无线相关)

ti (ti网卡相关工具及库)

vendor 目录 (厂家定制内容)

-- aosp (android open source project)

-- products (一些板级规则)

-- htc (HTC公司)

-- common-open (通用部分)

-- akmd (解压img用的工具)

-- dream-open (G1开放部分)

-- prebuilt-open (预编译开放部分)

-- sapphire-open (sapphire这款型号开放内容)

-- pv-open (没东西)

-- qcom (里面基本是空的)

-- sample (google提供的样例)

-- apps (应用)

-- client (用户)

-- upgrade (升级)

-- frameworks (框架)

-- PlatformLibrary (平台库)|-- products (产品)

-- sdk_addon (sdk添加部分)

-- skins (皮肤)

-- WVGAMedDpi (WVGA适用的图片)

通过git clone下载最新的linux内核源码

通过android内核编译环境进行编译:

安装环境,即第二章的交叉编译环境。

编译linux内核:

export path=/root/compilers/arm-none-linux-gnueabi/bin:$path

cd ~/linux_kernel

make clean

make

本章android移植实际上就是linux内核的移植,学习了两种搭建linux内核开发环境,为以后linux驱动移植打下基础。

时间: 2024-10-13 09:06:16

android驱动开发第三、四章读书笔记的相关文章

Android深度探索——第四章读书笔记及心得

源代码的下载及编译 ——第四章读书笔记及心得 通过阅读书籍知道了Android源代码和Linux源代码的区别,了解了什么是Android移植.知道了Android移植就是Linux内核移植,而Linux内核移植主要就是Linux的驱动移植.为了开发和测试内核环境需要对环境进行搭建,进而知道了如何搭建环境.知道了如何下载Android/Linux源代码及配置Android源代码下载环境(并且知道Android源代码的下载并非一定要将4MB多的东西全部下载,也可以挑选着自己需要的东西下载,,可以利用

Android艺术开发探索第四章——View的工作原理(下)

Android艺术开发探索第四章--View的工作原理(下) 我们上篇BB了这么多,这篇就多多少少要来点实战了,上篇主席叫我多点自己的理解,那我就多点真诚,少点套路了,老司机,开车吧! 我们这一篇就扯一个内容,那就是自定义View 自定义View 自定义View的分类 自定义View的须知 自定义View的实例 自定义View的思想 一.自定义View的分类 自定义View百花齐放,没有什么具体的分类,不过可以从特性大致的分为4类,其实在我看来,就三类,继承原生View,继承View和继承Vie

第四章读书笔记 进程调度

第四章读书笔记 进程调度 什么是进程调度 现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程). 这个管理程序就是调度程序,它的功能说起来很简单: 决定哪些进程运行,哪些进程等待 决定每个进程运行多长时间 此外,为了获得更好的用户体验,运行中的进程还可以立即被其他更紧急的进程打断. 总之,调度是一个平衡的过程.一方面,它要保证各个运行的进程能够最大限度的使用CPU(即尽量少的切换进程,进程切换过多,CPU的时间会浪

Linux内核分析第四章 读书笔记

Linux内核分析第四章 读书笔记 第一部分--进程调度 进程调度:操作系统规定下的进程选取模式 面临问题:多任务选择问题 多任务操作系统就是能同时并发地交互执行多个进程的操作系统,在单处理器机器上这会产生多个进程在同时运行的幻觉,在多处理器机器上,这会使多个进程在不同的处理机上真正同时.并行地运行.无论在单处理器或者多处理器机器上,多任务操作系统都能使多个进程处于堵塞或者睡眠状态,也就是说,实际上不被投入执行,直到工作确实就绪. 多任务系统可以划分为两类:非抢占式多任务和抢占式多任务.Linu

《Linux内核设计与实现》第四章读书笔记

第四章 进程调度 第4章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发行的效果. 调度程序没有太复杂的原理,最大限度地利用处理器时间的原则是只要有可以执行的进程,那么就总会有进程正在执行,但是只要系统中可运行的进程的数目比处理器的个数多,就注定某一给定时刻会有一些进程不能执行,这些进程在等待运行,在一组处于可运行状态的进

第四章 读书笔记

配置android源代码下载环境:第一步:创建一个用于存放下载脚本文件(repo)的目录(可将该脚本文件放到任何目录中,在这里使用~/bin).第二步:下载repo脚本文件(用于下载android源代码)第三步:创建用于存放android源代码的目录(可放在其他目录中).第四步:初始化 第五步:开始下载android源代码.下载android源代码中的某个子项目有两种方法:方法一:使用repo sync命令 使用git clone命令.repo sync和git clone命令下载源代码主要区别

JavaScript高级程序设计(第3版)第四章读书笔记

第四章 变量.作用域和内存问题 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象.基本数据类型是:Undefined.Null.Boolean.Number和String.引用类型的值是保存在内存中的对象.JavaScript不允许直接访问内存中的位置,即不能直接操作对象的内存空间. 不能给基本类型的值添加属性,只能给引用类型值动态地添加属性. 从一个变量向另一个变量复制基本类型值时,两个变量可以参

Android深度探索--HAL与驱动开发----第四章读书笔记

1. 下载.编译.测试源代码 创建存放下载文件的目录(repo) 下载repo脚本文件 创建用于存放源代码的目录 开始下载源代码. 2. 源代码目录含义摘要 Abi 应用程序二进制接口 Device 于设备相关的代码 External 宽展工具源代码 Ndk NDK相关的源代码 Sdk SDK如ddms.draw9patch.sdkmannager. System Android的基本系统 3. 下载源代码中的一部分 使用repo sync命令 使用git clone命令 4. linux内核目

Android系统移植与驱动开发第四章读书笔记

1. 源码的下载 源代码的下载,首先需要安装以下工具软件:curl 和 git-core 1.1安装curl: 打开终端,可以使用按Ctrl+Alt +T的快捷方式打开终端 在终端中执行命令:sudo apt-get install curl 1.2安装git-core 1.2.1在用户目录下新建bin目录 在终端中执行:mkdir ~/bin 1.2.2安装git-core 在终端中执行:curl https://dl-ssl.google.com/dl/googlesource/git-re