原创 【leetcode】無重複字符的最長子串

  給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。 示例 1: 輸入: "abcabcbb" 輸出: 3 解釋: 因爲無重複字符的最長子串是 "abc",所以其長度爲 3。 示例 2: 輸入: "bbbbb"

原创 linux 內核 內存管理 slub算法 (一) 原理

https://blog.csdn.net/lukuen/article/details/6935068        內核管理頁面使用了2個算法:夥伴算法和slub算法,夥伴算法以頁爲單位管理內存,但在大多數情況下,程序需要的並不是一整

原创 kernel之啓動第一個用戶進程

上一篇說到,kernel代碼重定位完成後,設置棧,跳轉到 start_kernel去啓動init進程。 uboot的環境變量打印: bootargs=console=ttyS0,115200 mem=512M root=/dev/mmcb

原创 kernel之啓動流程head.S

通過上一篇Makefile我們分析到了,編譯出vmlinux的第一個原材料是head.o。. 先回顧下uboot是怎麼啓動kernel的。uboot將kernel從flash中拷貝到sdram後,設置tag進行工作交接,然後啓動內核。th

原创 uboot分析之板卡初始化和啓動內核

start.s完成後,跳轉到start_armboot繼續執行相關操作。 1.gd相關初始化。放在sdram中,記錄一些相關信息。如環境變量等,下面會用到。 2.nor falsh識別及初始化 flash_init flash_

原创 kernel之Makefile分析

首先拿到kernel,我們和uboot一樣,首先進行 make *_defconfig,然後看到底做了什麼呢? 搜索: find . -name *defconfig 文件。我們找到對應板卡。 ./arch/arm/configs/xil

原创 uboot之第一階段start.s

Makefile分析完成後,發現0bj 第一個文件時start.o,我們找到start.s進行分析。 1.首先看到的是中斷向量表 _start: b reset //0 ldr pc, _und

原创 uboot之Makefile淺析

拿到新的 uboot後(uboot1.1.6),最開始進行 make xxx_config。然後再進行make。這裏面進行了什麼操作呢? 以三星的 s3c2410爲例。首先打開Makefile 發現其中: $(shell [ -d $

原创 I2C協議及驅動

1.環境 軟件基於linux 2.2.26。硬件基於s3c2440。 2.I2C協議  2條雙向串行線,一條數據線SDA,一條時鐘線SCL。  SDA傳輸數據是大端傳輸,每次傳輸8bit,即一字節。總線上每個設備都有自己的一個addr,共

原创 mmu工作原理【3】代碼實戰

環境 1.硬件平臺:s3c2440 (arm920t核) 2.軟件:裸機代碼。目前已經支持sdram,nandflash,norflash,lcd與觸摸屏校準。 s3c2440 MMU相關知識(datesheet)        首先了解

原创 計算機系統總結之MMU工作原理【1】

1. mmu產生原因   許多年以前,當人們還在使用DOS或是更古老的操作系統的時候,計算機的內存還非常小,一般都是以K爲單位進行計算,相應的,當時的程序規模也不大,所以內存容量雖然小,但還是可以容納當時的程序。但隨着圖形界面的興起還用用

原创 計算機系統總結之 MMU工作原理 【2】

1.二級頁表         在MMU工作原理1 中,我們只是描述了1級頁表。如果我們有一個32位的地址空間,每個頁框是4k,和一個4Byte的 頁表,則也需要4M(4* 2^(32-12))的頁表駐留在存儲器中。        如下圖(

原创 【數據結構】之內核鏈表

#include <string.h> struct list_head{ struct list_head *next,*pre; }; #define LIST_HEAD(name) struct list_head

原创 【轉】【linux內核】linux調度算法--快速找到最優進程及時間片算法

爲什麼要了解內核的調度策略呢?呵呵,因爲它值得我們學習,不算是廢話吧。內核調度程序很先進很強大,管理你的LINUX上跑的大量的亂七八糟的進程,同時還保持着對用戶操作的高靈敏響應,如果可能,爲什麼不把這種思想放到自己的應用程序裏呢?或者,有

原创 【轉】【Linux 內核】內存管理(二)夥伴算法

https://blog.csdn.net/wenqian1991/article/details/27968779         通常情況下,一個高級操作系統必須要給進程提供基本的、能夠在任意時刻申請和釋放任意大小內存的功能,就像ma