/pub/repo 에 “git clone git://xxx.xxx.xxx.xxx/repo/kernel kernel” 과 같이 하여 repository를 설정하였다면
git://<새 서버>/pub/repo/kernel 등의 URL로 접근이 가능.
touch .git/git-daemon-export-ok
git config daemon.receivepack=”true”
/pub/repo 에 “git clone git://xxx.xxx.xxx.xxx/repo/kernel kernel” 과 같이 하여 repository를 설정하였다면
git://<새 서버>/pub/repo/kernel 등의 URL로 접근이 가능.
touch .git/git-daemon-export-ok
git config daemon.receivepack=”true”
0. 한글 입력이 필요할 경우 다음과 같은 스크립트를 ~/bin 아래에 적당한 이름으로 작성합니다.
1. “시작” -> “프로그램” -> “Xming” -> “XLaunch”
2. “Multiple windows” 선택 -> “다음(N)”
3. “Start a program” 선택 -> “다음(N)”
4. “Start program” 에 실행한 파일 이름을 적고(필요하면 절대 경로 포함),
(한글 설정 스크립트의 경우 ~/bin/스크립트명)
“Run Remote” 에 “Using PuTTY(plink.exe)” 를 선택하고,
“Connect to computer” 에 host 주소를, “Login as user” 에 id를, “Password” 에 말 그대로 password를 적는다
-> “다음(N)”
5. PuTTY가 설치된 경로(한글 PuTTY의 경우 C:\Program Files\iPutty)에서 plink.exe 를 선택한다.
6. Font dpi 설정을 위해 “Addtional parameters for Xming” 에 “-dpi 100” 을 적는다. -> “다음(N)”
7. “Save configuration” 을 눌러 바탕화면에 “runStart.xlaunch” 와 같이 저장한다. -> “마침”
“Include PuTTY password as insecure clear text” 에 체크하면 패스워드를 입력할 필요는 없지만 저장된 파일 안에 패스워드가 그대로 저장되어 보이게 되므로, 취향에 따라 체크하도록 한다.
Binary | Oct | Dec | Hex | Abbr | PR[t 1] | CS[t 2] | CEC[t 3] | Description |
---|---|---|---|---|---|---|---|---|
000 0000 | 000 | 0 | 00 | NUL | ␀ | ^@ | \0 | Null character |
000 0001 | 001 | 1 | 01 | SOH | ␁ | ^A | Start of Header | |
000 0010 | 002 | 2 | 02 | STX | ␂ | ^B | Start of Text | |
000 0011 | 003 | 3 | 03 | ETX | ␃ | ^C | End of Text | |
000 0100 | 004 | 4 | 04 | EOT | ␄ | ^D | End of Transmission | |
000 0101 | 005 | 5 | 05 | ENQ | ␅ | ^E | Enquiry | |
000 0110 | 006 | 6 | 06 | ACK | ␆ | ^F | Acknowledgment | |
000 0111 | 007 | 7 | 07 | BEL | ␇ | ^G | \a | Bell |
000 1000 | 010 | 8 | 08 | BS | ␈ | ^H | \b | Backspace[t 4][t 5] |
000 1001 | 011 | 9 | 09 | HT | ␉ | ^I | \t | Horizontal Tab |
000 1010 | 012 | 10 | 0A | LF | ␊ | ^J | \n | Line feed |
000 1011 | 013 | 11 | 0B | VT | ␋ | ^K | \v | Vertical Tab |
000 1100 | 014 | 12 | 0C | FF | ␌ | ^L | \f | Form feed |
000 1101 | 015 | 13 | 0D | CR | ␍ | ^M | \r | Carriage return[t 6] |
000 1110 | 016 | 14 | 0E | SO | ␎ | ^N | Shift Out | |
000 1111 | 017 | 15 | 0F | SI | ␏ | ^O | Shift In | |
001 0000 | 020 | 16 | 10 | DLE | ␐ | ^P | Data Link Escape | |
001 0001 | 021 | 17 | 11 | DC1 | ␑ | ^Q | Device Control 1 (oft. XON) | |
001 0010 | 022 | 18 | 12 | DC2 | ␒ | ^R | Device Control 2 | |
001 0011 | 023 | 19 | 13 | DC3 | ␓ | ^S | Device Control 3 (oft. XOFF) | |
001 0100 | 024 | 20 | 14 | DC4 | ␔ | ^T | Device Control 4 | |
001 0101 | 025 | 21 | 15 | NAK | ␕ | ^U | Negative Acknowledgement | |
001 0110 | 026 | 22 | 16 | SYN | ␖ | ^V | Synchronous Idle | |
001 0111 | 027 | 23 | 17 | ETB | ␗ | ^W | End of Trans. Block | |
001 1000 | 030 | 24 | 18 | CAN | ␘ | ^X | Cancel | |
001 1001 | 031 | 25 | 19 | EM | ␙ | ^Y | End of Medium | |
001 1010 | 032 | 26 | 1A | SUB | ␚ | ^Z | Substitute | |
001 1011 | 033 | 27 | 1B | ESC | ␛ | ^[ | \e[t 7] | Escape[t 8] |
001 1100 | 034 | 28 | 1C | FS | ␜ | ^\ | File Separator | |
001 1101 | 035 | 29 | 1D | GS | ␝ | ^] | Group Separator | |
001 1110 | 036 | 30 | 1E | RS | ␞ | ^^ | Record Separator | |
001 1111 | 037 | 31 | 1F | US | ␟ | ^_ | Unit Separator | |
111 1111 | 177 | 127 | 7F | DEL | ␡ | ^? | Delete[t 9][t 5] |
Binary | Oct | Dec | Hex | Glyph |
---|---|---|---|---|
010 0000 | 040 | 32 | 20 | space |
010 0001 | 041 | 33 | 21 | ! |
010 0010 | 042 | 34 | 22 | “ |
010 0011 | 043 | 35 | 23 | # |
010 0100 | 044 | 36 | 24 | $ |
010 0101 | 045 | 37 | 25 | % |
010 0110 | 046 | 38 | 26 | & |
010 0111 | 047 | 39 | 27 | ‘ |
010 1000 | 050 | 40 | 28 | ( |
010 1001 | 051 | 41 | 29 | ) |
010 1010 | 052 | 42 | 2A | * |
010 1011 | 053 | 43 | 2B | + |
010 1100 | 054 | 44 | 2C | , |
010 1101 | 055 | 45 | 2D | – |
010 1110 | 056 | 46 | 2E | . |
010 1111 | 057 | 47 | 2F | / |
011 0000 | 060 | 48 | 30 | 0 |
011 0001 | 061 | 49 | 31 | 1 |
011 0010 | 062 | 50 | 32 | 2 |
011 0011 | 063 | 51 | 33 | 3 |
011 0100 | 064 | 52 | 34 | 4 |
011 0101 | 065 | 53 | 35 | 5 |
011 0110 | 066 | 54 | 36 | 6 |
011 0111 | 067 | 55 | 37 | 7 |
011 1000 | 070 | 56 | 38 | 8 |
011 1001 | 071 | 57 | 39 | 9 |
011 1010 | 072 | 58 | 3A | : |
011 1011 | 073 | 59 | 3B | ; |
011 1100 | 074 | 60 | 3C | < |
011 1101 | 075 | 61 | 3D | = |
011 1110 | 076 | 62 | 3E | > |
011 1111 | 077 | 63 | 3F | ? |
Binary | Oct | Dec | Hex | Glyph |
---|---|---|---|---|
100 0000 | 100 | 64 | 40 | @ |
100 0001 | 101 | 65 | 41 | A |
100 0010 | 102 | 66 | 42 | B |
100 0011 | 103 | 67 | 43 | C |
100 0100 | 104 | 68 | 44 | D |
100 0101 | 105 | 69 | 45 | E |
100 0110 | 106 | 70 | 46 | F |
100 0111 | 107 | 71 | 47 | G |
100 1000 | 110 | 72 | 48 | H |
100 1001 | 111 | 73 | 49 | I |
100 1010 | 112 | 74 | 4A | J |
100 1011 | 113 | 75 | 4B | K |
100 1100 | 114 | 76 | 4C | L |
100 1101 | 115 | 77 | 4D | M |
100 1110 | 116 | 78 | 4E | N |
100 1111 | 117 | 79 | 4F | O |
101 0000 | 120 | 80 | 50 | P |
101 0001 | 121 | 81 | 51 | Q |
101 0010 | 122 | 82 | 52 | R |
101 0011 | 123 | 83 | 53 | S |
101 0100 | 124 | 84 | 54 | T |
101 0101 | 125 | 85 | 55 | U |
101 0110 | 126 | 86 | 56 | V |
101 0111 | 127 | 87 | 57 | W |
101 1000 | 130 | 88 | 58 | X |
101 1001 | 131 | 89 | 59 | Y |
101 1010 | 132 | 90 | 5A | Z |
101 1011 | 133 | 91 | 5B | [ |
101 1100 | 134 | 92 | 5C | \ |
101 1101 | 135 | 93 | 5D | ] |
101 1110 | 136 | 94 | 5E | ^ |
101 1111 | 137 | 95 | 5F | _ |
영문 위키피디아에서 참조
Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. See Terms of Use for details.
현재 스레드 외부에다 작업을 시작하도록 지시하고 끝나기를 기다릴 때 사용. 세마포어를 LOCKED 상태로 하여 사용할 수도 있지만, 세마포어는 거의 항상 세마포어를 획득할 수 있을 때에 치중하여 최적화되어 왔다. 따라서 이럴 때는 completion 을 사용하는 것이 좋다. 구현은 kernel/sched.c 를 참조.
1. completion 초기화
<linux/completion.h>를 포함하여야 한다. 자료 타입은 struct completion.
1.1. Compile time 초기화
동시성 관련 함수에 대해서 다시 한번 정리하고 가자. Linux device driver 3판, 5장. “동시성과 경쟁 상태” 를 기준으로 정리한다.
공유 자원 접근을 위한 Lock 을 위해서 다음과 같은 것들을 사용한다.
1. 세마포어와 뮤텍스
Critical Section을 정의하기 위해서 세마포어를 사용한다. 일반적으로 P와 V 함수 쌍을 사용하는데, linux 에서는 P함수는 “down”, V 함수를 “up”이라 부른다. 단일 세마포어(공유 자원 개수를 1개로 정의)로 사용할 때 뮤텍스(Mutual Exclusion)라 부른다.
1.1. 세마포어 초기화
<asm/semaphore.h> 를 포함하여야 한다. 관련 Type은 struct semaphore.
1.1.1. 세마포어로 사용할 때 초기화
val 은 세마포어에 할당할 초기값.
1.1.2. Mutex로 사용할 때 초기화
정적 초기화
실행 중 초기화
1.2. 세마포어 획득하기
세마포어 값을 감소시키고 필요한 만큼 기다린다.
세마포어 값을 감소시키고 필요한 만큼 기다리지만, 인터럽트 가능하다. 인터럽트를 받으면 0이 아닌 값을 반환하고, 세마포어를 쥐고 있지 않는다. 때문에 항상 반환값을 확인하여야 한다.
세마포어를 획득할 수 없다면 바로 0이 아닌 값을 반환한다.
1.3. 세마포어 반환
2. 읽기/쓰기 세마포어
읽기만 수행하는 스레드라면 여럿이 함께 접근해도 된다. 이럴 때 rwsem 이라는 특수 세마포어를 이용한다.
rwsem 을 사용하면 쓰기 스레드 하나가 잡고 있던가 읽기 스레드 여럿이 잡고 있던가 둘 중에 하나가 되는데 우선순위는 쓰기 스레드에게 있다. 쓰기 스레드가 임계구역에 접근하는 순간, 읽기 스레드는 모든 쓰기 스레드가 작업을 끝낼 때까지 기다려야 한다. 그래서 쓰기 스레드가 많을 경우 읽기 스레드가 오랫동안 접근 권한을 얻지 못할 수 있다. 따라서 쓰기 접근이 매우 드물고, 짧은 시간 동안에만 필요한 경우에 적당하다.
2.1. 읽기/쓰기 세마포어 초기화
<linux/resem.h> 를 포함하여야 한다. 관련 타입은 struct rw_semaphore. 런타임에 명시적으로 초기화되어야 한다.
2.2. 읽기 전용 세마포어 사용
읽기 전용 접근 권한을 제공한다. 다른 읽기 스레드와 동시 참조가 가능하다. 호출 프로세스를 D 상태(인터럽트가 불가능한 잠자기 상태)로 빠뜨릴 수 있다는 사실에 주의한다.
읽기를 수행할 수 없을 경우 기다리지 않는다. 접근이 가능하다면 0 이 아닌 값을, 이외에는 0을 반환한다. 다른 커널 함수는 대부분 성공일 때 0을 반환하지만 down_read_ttylock은 반대다.
읽기 전용 세마포어 해제
2.2. 쓰기 전용 세마포어 사용
down_read 와 동일
down_read_ttylock 과 동일
up_read 와 동일
잠시만 쓰기 락을 걸어 수정하고 한동안은 읽기 권한만 필요하다면
시작 – 실행 – tsshutdn 3600 /powerdown
3600은 초
windows 7 은 tsshutdn 대신 shutdown
Windows 10은 shutdown /s /t 3600
http://www.parkoz.com/zboard/view.php?id=my_tips&page=1&sn1=&divpage=3&sn=off&ss=on&sc=off&keyword=xp&select_arrange=headnum&desc=asc&no=13051
안됨 – /BOOT/BCD 어쩌고
http://blog.naver.com/lvis?Redirect=Log&logNo=10036988219&vid=0
안됨 – Disk error 어쩌고 저쩌고
http://www.usboffice.kr
– http://www.usboffice.kr/zbxe/275520
– http://blog.daum.net/idrlee/16100073
– http://usboffice.kr/zbxe/use_boot/481399/page/3
http://www.msfn.org/board/install-usb-winsetupfromusb-gui-t120444.html
NETBOOT로 선회
http://www.cyworld.com/hyunweb/2811496
성공 – 결국 관건은 C: 에 부팅할 수 있도록 Windows 98 부팅 디스크를 심고, D: 에 I386 폴더를 복사해서 I386 아래의 WINNT 를 실행하는 것이었다. 실행 후 파티션 작업 역시 다시 할 수 있는 듯 하다.
USB 부트
http://blog.naver.com/baljern/140097762413
성공 – diskpart 에서 “create partition primary size=200000 (200기가)”
cmd 에서 “format c: /fs:ntfs /q/u” 로 NTFS 포멧
cmd 에서 x:\i386> “winnt32.exe /syspart:c /tempdrive:c”
MBR 이상인 경우 MBR write 툴도 함께 있음.
http://unetbootin.sourceforge.net/ 에서 unetbootin 을 다운받는다.
우분투 설치 ISO 파일을 http://www.ubuntu.com/getubuntu/download 에서 다운로드받는다.
미러를 통해 다운로드받는 것이 빠르다.
USB를 꽂고, unetbootin 을 실행시킨 후 Disk image의 ISO 에 다운로드 받은 ISO를 선택한 후 OK를 누른다.
1~4까지 진행된 후 뽑아서 쓰면 된다.
윈도우즈가 깨진 노트북에서 외장하드로 파일 복사(데이터 백업)가 필요해서 사용했다.
1. monisetup.php 에서 한 일.
1.1. Site 이름 설정
디렉토리 안의 모든 파일들을 일일이 심볼릭 링크를 걸고 싶을 때 Perl을 이용해서 하는 방법이다.(절대 경로를 준다면 cp -sR 옵션으로 줄 수도 있지만..)
다음을 link.pl 등의 이름으로 저장한다.