/* IAMROOT-12D (2016-01-23):
 * --------------------------
 * 여기서 부터
 */

wont_overwrite:
/*
 * If delta is zero, we are running at the address we were linked at.
 *   r0  = delta
 *   r2  = BSS start
 *   r3  = BSS end
 *   r4  = kernel execution address (possibly with LSB set)
 *   r5  = appended dtb size (0 if not present)
 *   r7  = architecture ID
 *   r8  = atags pointer
 *   r11 = GOT start
 *   r12 = GOT end
 *   sp  = stack pointer
 */

		/* IAMROOT-12D (2015-12-19):
		 * -------------------------
		 * r1 = r0 | r5 (delta | 덧붙여진 dtb의 크기)
		 * if(r1 == 0)
		 *	goto not_relocated;
		 */
		orrs	r1, r0, r5
		beq	not_relocated

		add	r11, r11, r0
		add	r12, r12, r0

#ifndef CONFIG_ZBOOT_ROM
		/*
		 * If we're running fully PIC === CONFIG_ZBOOT_ROM = n,
		 * we need to fix up pointers into the BSS region.
		 * Note that the stack pointer has already been fixed up.
		 */
		add	r2, r2, r0
		add	r3, r3, r0

		/*
		 * Relocate all entries in the GOT table.
		 * Bump bss entries to _edata + dtb size
		 */
1:		ldr	r1, [r11, #0]		@ relocate entries in the GOT
		add	r1, r1, r0		@ This fixes up C references
		cmp	r1, r2			@ if entry >= bss_start &&
		cmphs	r3, r1			@       bss_end > entry
		addhi	r1, r1, r5		@    entry += dtb size
		str	r1, [r11], #4		@ next entry
		cmp	r11, r12
		blo	1b





'System > Linux Kernel' 카테고리의 다른 글

barrier와 volatile  (0) 2016.01.23
PLT GOT  (0) 2016.01.23
CFS 구현의 핵심  (0) 2016.01.22
커널에서 원하는 값을 가지고오기 위해 clz를 하는 이유  (0) 2016.01.16
system(), fork()  (0) 2015.12.24

CFS 스케쥴링 알고리즘은 다음 실행할 프로세스를 실행할 때 vruntime 이 가장 작은 프로세스룰 선택한다.
단순히 타임슬라이스 개념만 생각하지 않고, 저 값의 비율을 생각함


이는 CFS에서 가장 중요한 특징이며,
이를 효율적으로 처리하기위해 red-black algorithm을 사용




스케줄링에 red-black algorithm이 사용되는 이유가 이거군..



'System > Linux Kernel' 카테고리의 다른 글

PLT GOT  (0) 2016.01.23
wont_overwrite  (0) 2016.01.23
커널에서 원하는 값을 가지고오기 위해 clz를 하는 이유  (0) 2016.01.16
system(), fork()  (0) 2015.12.24
[Unix V6] 시스템 부팅  (0) 2015.12.19

http://learnbranch.urigit.com/?demo

http://rogerdudler.github.io/git-guide/index.ko.html

http://git-scm.com/book/ko/v1




git


Git은 커밋을 가능한 자유롭게 하고자하여 커밋할 때마다 디렉토리 전체를 복사하지 않음

각 저장소의 이전 버전과 다음 버전의 변경내역("delta")를 저장

대부분의 커밋이 그 커밋위의 부모 커밋을 가리키고 있게 됨


저장소 복제("clone")을 하려면, 모든 delta를 풀어야 함

=> " resolving deltas "



git commit




git branch 

: 하나의 커밋과 그 부모 커밋들을 포함하는 작업 내역

특정 커밋에 대한 reference로 branch를 많이 만들어도 메모리나 디스크 공간에 부담이 되지 않음.

작업내역을 쌓아놓기보다는 잦은 branch 수행으로 작은 단위로 나누는 것이 좋음



 


git branch newImage


git commit

 : 제어가 master에 있는 상태에서 commit을 수행하여 master branch가 수행됨


다시 돌아가서..

 

git checkout newImage; git commit

* checkout (이동)


git merge(합치기)

: 여러 브랜치에서 새로 개발한 내용을 합치는 작업

두 개의 부모를 가리키는 특별한 커밋을 만들어냄

=> 두 개의 부모를 가리킴? 한 부모의 모든 작업내역과 나머지 부모의 모든 작업내역, 

그리고 그 두 부모의 모든 부모들의 작업 내역을 포함한다는 의미



master가 제어를 가진 상태에서 

git merge bugFix master (bugFix에 master를 합쳐라/연결하라)

 : master가 두 부모가 있는 커밋을 가리키고 있음


여기서 master에 bugFix를 연결하라/합쳐라

git merge master bugFix

 

: 모든 커밋의 색이 같아졌으며, 이는 두 브랜치가 모두 저장소의 모든 작업을 포함하고 있음을 의미


bugFix가 이미 master의 부모쪽에 있었기 때문에, 

아주 간단하게 bugFix를 master가 붙어있는 커밋으로 이동시킬 수 있음




git branch bugFix

git checkout bugFix

git commit

git checkout master; git commit

git merge bugFix master



git rebase

: 브랜치끼리의 작업을 접목하는 두번째 방법으로, 기본적으로 커밋들을 모아서 복사한 뒤 다른 곳에 떨궈 놓는 것


커밋들의 흐름을 보기 좋게 한줄로 만들 수 있음. 커밋과 로그이력이 한결 깨끗해 짐



bufFix 브랜치에서의 작업을 master 브랜치 위로 직접 옮기기 (마치 순서대로 개발한 것 처럼)

bugFix가 선택된 상황에서, 

git rebase master

C3는 어딘가 그대로 남아있고 복사본이 생기게 됨

이때 master branch와의 병합을 원하므로, master로 이동 후 

git rebase bugFix

master가 bugFix의 부모로 위치해 있었기 때문에, 더 앞쪽의 커밋을 가리키게만 바꿔주면 손쉽게 위처럼 설정이 가능





git branch bugFix

git checkout bugFix; git commit

git checkout master; git commit

git checkout bugFix

git rebase master



git 작업돌리기

- 개별 파일이나 묶음을 스테이징하기

- 실제 변경을 복구


변경내용 되돌리기

git reset

git revert


git reset은 이전 커밋을 가리키도록 하여 작업을 되돌리는 방법으로 히스토리 변경이라고도 함


git reset HEAD~1


히스토리를 변경하는 git reset은 각자 작업하는 로컬 브랜치에서는 유용하지만,

여러사람이 공유하는 리모트 브랜치에는 적합하지 않음


변경분을 되돌리고, 되돌린 내용을 다른 사람과 공유하는 작업이 필요함

git revert













'System > Etc.' 카테고리의 다른 글

FDT  (0) 2015.11.14
[OS 기초] File System 2 - Disk Scheduling  (0) 2015.11.06
[OS 기초] File System  (0) 2015.11.05
[OS 기초] I/O Device와 Device Driver  (0) 2015.11.05
[OS 기초] Demand paging 3 - Trashing, Working Set  (0) 2015.11.04

+ Recent posts