본문 바로가기

IT이론25

Atomic Operation 이란? Atomic Operation의 사전적 의미기능적으로 분할할 수 없거나 분할되지 않도록 보증된 조작. 원자와 같이 분할할 수 없다는 것을 비유하여 이렇게 부른다. 원자 조작은 끼어들기가 불가능하며, 만일 중지되면 동작 개시 직전의 상태로 시스템을 복귀시킬 것을 보증하는 복구(백업과 복원) 기능이 제공된다. Atomic Operation의 프로그래밍언어적 의미Atomic Operation이 필요한 부분은 멀티스레드 프로그램에서 공유 자원들에 대해 여러 스레드가 서로 동시에 액세스 하는 경쟁상태(race Condition)을 막시 위한 하나의 방법이다. 쉽게 말에 동기화를 위한 하나의 방법이다. ---------------------------------------------------------------.. 2014. 1. 24.
대칭형 다중 처리 (SMP) 대칭형 다중 처리 또는 SMP(symmetric multiprocessing)는 두 개 또는 그 이상의 프로세서가 한 개의 공유된 메모리를 사용하는 다중 프로세서 컴퓨터 아키텍처이다. 현재 사용되는 대부분의 다중 프로세서 시스템은 SMP 아키텍처를 따르고 있다. SMP 시스템은, 작업을 위한 데이터가 메모리의 어느 위치에 있는지 상관없이 작업할 수 있도록 프로세서에게 허용한다. 운영체제의 지원이 있다면, SMP 시스템은 부하의 효율적 분배를 위해 프로세서간 작업 스케줄링을 쉽게 조절할 수 있다. 그러나 메모리는 프로세서보다 느리다. 단일 프로세서라도 메모리로부터 읽는 작업에 상당한 시간을 소비한다. SMP는 이를 더욱 악화시키는데, 한 번에 한 개의 프로세서만이 동일한 메모리에 접근 가능하기 때문이다. .. 2014. 1. 24.
유저모드와 커널모드 OS는 수퍼바이저 모드, 유저 모드, OS 모드, 통신 모드의 4가지 모드가 있다. 유사하게, 프로세스는 CPU의 유저모드와 커널모드에서 동작할 수 있다.그래서 OS의 유저 모드와 CPU의 유저 모드가 혼동될 수 있다.여기서 내가 알고 싶은건 CPU의 유저 모드임. 붉은 색 부분이 커널모드, 초록색 부분이 유저 모드를 보여준다.(win7에서 관리자로 로그인한 경우임) 유저 모드 - 임의로 실행시킨 특정 프로그램 (win32 API로 만든)을 말한다. - MS 프린터, MS 워드 등 - 유저 모드는 사용이 제한적이다. - 윈도우는 프로세서의 메모리 보호 서비스를 사용하여 악성 프로그램이 다른 시스템을 방해하는 것을 예방한다. - 다시 말해, 사용자는 커널에 의해 사용되는 메모리 영역에는 접근할 수 없다. .. 2014. 1. 24.
[ARM] 입력받은 숫자의 합을 2진수로 출력하기 .text _start: .global _start mov r0, #0 mov r2, #1 mov r7, #3 ldr r1, #3 mov r6, #0 mov r8, #128 mov r9, #7 swi 0 ldrb r5, [r1] LOOP: CMP r5, #10 BEQ cal CMP r5, #49 BLT LOOP2 CMP r5, #56 BGT LOOP2 SUB r5, r5, #48 ADD r6, r6, r5 LOOP2: mov r0, #0 mov r2, #1 mov r7, #3 ldr r1, =buf swi 0 ldrb r5, [r1] B LOOP cal: AND r5, r6, r8 lsr r5, r9 lsr r8, #1 mov r0, #1 mov r2, #1 mov r7, #4 ADD r5, r5, #4.. 2014. 1. 23.
[ARM] 입력받은 문자열중 숫자만 출력하기 .text_start: .global _startmov r0, #0ldr r1, =bufmov r2, #1mov r7, #3swi 0ldrb r5, [r1]LOOP:CMP r5, #10BEQ exitCMP r5, #49BLT LOOP2CMP r5, #57BGT LOOP2mov r0, #1mov r2. #1mov r7, #4swi 0LOOP2:mov r0, #0ldr r1, =bufmov r2, #1mov r7, #3swi 0ldrb r5, [r1]B LOOPexit:mov r0, #0mov r7, #1swi 0.data.alignbuf: .skip 4.end 2014. 1. 23.
[ARM] Hello World 출력하기 .text _start: .global _start @ sys_write ( fd, pstr, len ) @ r7=4 r0 r1 r2 mov r0, #1 @ fd 2014. 1. 23.