Process Sysncronization

데이터의 접근

데이터를 읽어와서 연산하고 다시 저장합니다.

Race Condition

S-box를 공유하는 E-box가 여럿 있는 경우 Race Condition의 가능성이 있습니다.
ex) 커널 모드 수행 중 인터럽트로 커널모드 다른 루틴 수행시

race condition (1/3)
  • kernel 수행 중 인터럽트 발생
  • 커널모드 running 중 inetrrupt 발생하여 인터럽트 처리 루틴이 수행
  • 양쪽 다 커널 코드이므로 kernel address space 공유

race condition (2/3)
Read more

Process Management

출처 : 이화여자대학교 반효경 (http://www.kocw.net/home/search/kemView.do?kemId=1046323)

프로세스 생성

  • 부모 프로세스가 자식 프로세스 생성
  • 프로세스의 트리(계층 구조) 생성
  • 프로세스는 자원을 필요로 함
    • 운영체제로부터 받는다
    • 부모와 공유한다
  • 주소 공간
    • 자식은 부모의 공간을 복사
    • 자식은 그 공간에 새로운 프로그램을 올림
  • 유닉스의 예 : 복제 생성하고 덮어씌움
    • fork() 시스템 콜이 새로운 프로세스를 복제 생성
      • 부모를 그대로 복사
      • 주소 공간 할당
    • exec()
      • fork 다음에 이어지는 exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림 (덮어 씌움)

프로세스 종료

  • exit
    • exit 시스템 콜을 통해 프로세스가 마지막 명령을 수행한후 운영체제에게 이를 알려줌
    • 자식이 부모에게 output data를 보냄(via wait system call)
    • 프로세의 각종 자원들이 운영체제에게 반납됨
  • abort
    • 부모 프로세스가 자식의 수행을 종료시킴
    • 자식이 할당 자원의 한계치를 넘어섬
    • 자식에게 할당된 테스크가 더 이사 필요하지 않음
    • 부모가 종료하는 경우
      • 운영체제는 부모 프로세스가 종료하는 경우 자식이 더 이상 수행되도록 두지 않음
      • 단계적인 종료

fork() system call

왼쪽은 부모, 오른쪽은 자식. 자식은 fork() 이후의 라인부터 실행

exec() system call

Read more

보물상자 비밀번호

https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo&categoryId=AWXRUN9KfZ8DFAUo&categoryType=CODE

쉬운 문제이다. 이 문제에서는 정렬과 진법 변환을 배울 수 있다.

풀이

  1. 회전 시키고
  2. 각 변 확인하며 리스트에 저장

개념

  1. 정렬

    오름차순 정렬 : Collections.sort(list)

    내림차순 정렬 : Collections.sort(list) –> Collections.reverse(list)

  2. 진법 변환

    string 을 radix 진법으로 변환 : Integer.parseInt(String s, int radix)

코드

Read more

벽돌깨기

https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo&categoryId=AWXRQm6qfL0DFAUo&categoryType=CODE&&&

어려운 문제는 아니다. 방향은 잡았는데, 코드로 구현하는데 오래 걸렸다.

풀이

  1. 구슬 선택 : DFS
  2. 벽돌 깨기 : 재귀

DFS는 다음 그림과 같이 진행한다. 구슬을 쏠 수 있는 칼럼은 0, 1, 2, 3 으로 4개가 있다고 하면,

재귀는 다음 그림과 같이 구현한다. 3을 기준으로 벽돌을 깬다고 하면,

3 기준 동서남북을 체크한다. 3의 동쪽을 깨는 중에, 9가 나오기 때문에, 9 위치에서 다시 재귀 함수를 호출 한다.

Read more

Process

Process란 ?

실행중인 프로그램입니다. 메모리에 적재되어 CPU 할당을 받을 수 있습니다.

Context란 ?

CPU 수행상태를 나타내는 하드웨어 문맥입니다.

프로세스의 상태 (Process State) 란 ?

프로세스는 상태가 변경되며 수행됩니다.

  1. Running
    CPU를 잡고 instruction을 수행중인 상태입니다.
  2. Ready
    메모리 등 다른 조건을 모두 만족하고 CPU를 기다리는 상태 입니다.
  3. Blocked (wait, sleep)
    CPU를 주어도 당장 instruction을 수행할 수 없는 상태입니다. 프로세스 자신이 요청한 event(io같은거) 가 만족되지않아 이를 기다리는 상태입니다. 자신이 요청한 event 만족되면 ready 상태가 됩니다.
  4. New
    프로세스가 생성중인 상태입니다.
  5. Terminated
    execution이 끝난 상태입니다.
  6. Suspended (stopped)
    프로세스가 통째로 메모리에서 쫓겨난 상태입니다. 디스크에 swap out 됩니다. 외부에서 resume해 주어야 active가 됩니다.

Read more