singularity os

KB/RTOS 2008.04.10 08:09
ms 리서치에서 하고 있는 os   

http://research.microsoft.com/os/singularity/

'KB > RTOS' 카테고리의 다른 글

singularity os  (0) 2008.04.10
POSIX 지원  (0) 2008.04.01
rtos schedulability analysis  (0) 2008.04.01
rtos overhead measuring  (0) 2008.04.01
stack overflow detection  (0) 2008.04.01
OS-Awareness  (0) 2008.03.31
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


POSIX 지원

KB/RTOS 2008.04.01 13:31

오후 1:29 2008-04-01
조경민 bro@shinbiro.com
POSIX 지원
=================================


POSIX in Real-Time
----------------------------------------------------------
posix는 OS 표준 API모음으로 대부분의 RTOS들이 이를 지원하고 있다.
RTOS에서 POSIX를 지원할 때 Real time성을 고려해서 설계하는 방법이있다.
http://www.embedded.com/15201679?_requestid=557407

'KB > RTOS' 카테고리의 다른 글

singularity os  (0) 2008.04.10
POSIX 지원  (0) 2008.04.01
rtos schedulability analysis  (0) 2008.04.01
rtos overhead measuring  (0) 2008.04.01
stack overflow detection  (0) 2008.04.01
OS-Awareness  (0) 2008.03.31
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


오후 1:29 2008-04-01
조경민 bro@shinbiro.com
rtos schedulability analysis
======================================

Real-Time Operating Systems for DSP, part 7
http://www.embedded.com/columns/technicalinsights/199701818?pgno=5


Real-Time Operating Systems for DSP, part 8
http://www.dspdesignline.com/howto/showArticle.jhtml?articleID=199703749

'KB > RTOS' 카테고리의 다른 글

singularity os  (0) 2008.04.10
POSIX 지원  (0) 2008.04.01
rtos schedulability analysis  (0) 2008.04.01
rtos overhead measuring  (0) 2008.04.01
stack overflow detection  (0) 2008.04.01
OS-Awareness  (0) 2008.03.31
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


rtos overhead measuring

KB/RTOS 2008.04.01 13:30

오후 1:29 2008-04-01
조경민 bro@shinbiro.com
rtos overhead measuring
===================================
     
Measure your RTOS's real-time performance
----------------------------------------------------------
threadx에서 제공하는 apple to apple방식의 RTOS overhead측정소스 제공
context switch time, ISR with/without preemption, semaphore overhead측정
http://www.dspdesignline.com/showArticle.jhtml?articleID=199701756


Back to the basics: How to measure real-time performance
----------------------------------------------------------
ThreadX에서는 각 kernel function 별로 즉시리턴, 호출한 스레드가 suspend일때, supend였던 스레드가 요청을 처리하기 까지 시간, context switch가 일어나서 요청받은 스레드가 깨어나는데 드는 시간등의 추가적인 시간까지 재는 것을 보여줌
http://www.embedded.com/columns/technicalinsights/174401541?_requestid=832210


Tutorial: Techniques for measuring execution time and real time performance - Part 2
----------------------------------------------------------
Task Utilization = Worstcase execution time/period frequency
os overhead measuring은 logic analyzer를 연결해서 low priority task가 output channel1을 toggle시키고 higher task가 channel2를 toggle시키게 한다.
그렇게해서 os context switch time을 연산할 수 있다.
irq시간은 irq 라인을 따로 logic analyzer channel에 연결한다.
http://www.embedded.com/columns/technicalinsights/194300225?_requestid=625944

'KB > RTOS' 카테고리의 다른 글

POSIX 지원  (0) 2008.04.01
rtos schedulability analysis  (0) 2008.04.01
rtos overhead measuring  (0) 2008.04.01
stack overflow detection  (0) 2008.04.01
OS-Awareness  (0) 2008.03.31
RTOS contraint in application  (0) 2008.03.31
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


stack overflow detection


Say no to stack overflow
http://www.embedded.com/columns/technicalinsights/47101892?_requestid=832272

'KB > RTOS' 카테고리의 다른 글

rtos schedulability analysis  (0) 2008.04.01
rtos overhead measuring  (0) 2008.04.01
stack overflow detection  (0) 2008.04.01
OS-Awareness  (0) 2008.03.31
RTOS contraint in application  (0) 2008.03.31
HW타이머 사용시 주의 점  (0) 2008.01.11
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


OS-Awareness

KB/RTOS 2008.03.31 18:49
Use RTOS Event Logging to do Real-Time Systems Analysis
기존 방법은 instrumenting code (I/O pin, printf, file)였는데, instrumenting하는데 시간이 걸리며, 쉽지 않다.
RTOS event log API를 제공해서 유저가 원하는 때에 event logging을 해서 task별 system utilization화면을 보여주자.
http://www.embedded.com/columns/technicalinsights/202804926?_requestid=557651

'KB > RTOS' 카테고리의 다른 글

rtos overhead measuring  (0) 2008.04.01
stack overflow detection  (0) 2008.04.01
OS-Awareness  (0) 2008.03.31
RTOS contraint in application  (0) 2008.03.31
HW타이머 사용시 주의 점  (0) 2008.01.11
RCU (Read Copy Update)  (0) 2006.06.30
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


오후 6:48 2008-03-31
조경민 bro@shinbiro.com
RTOS contraint in application
================================================


제철공장 컨트롤 제어주기 20ms (포항제철소)
http://www.postech.ac.kr/rolling2001/paper/C65.pdf
석도공장(ETL:Electrolytic tinning Line)의 Shear Line은 석도 강판 (Tin Steel)을 일정 길이로 절단하여 Sheet재를 생산하는 공정으로 미국 메이커 전용의 PLC 7대가 수행
이 기기에 Seteeplechase사의 VLC(Visual Logic Controller)에서 20msec의 실시간 제어 주기를 갖음

'KB > RTOS' 카테고리의 다른 글

stack overflow detection  (0) 2008.04.01
OS-Awareness  (0) 2008.03.31
RTOS contraint in application  (0) 2008.03.31
HW타이머 사용시 주의 점  (0) 2008.01.11
RCU (Read Copy Update)  (0) 2006.06.30
rtos stuff  (0) 2006.01.23
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


오전 11:22 2008-01-11
조경민 bro@shinbiro.com
HW타이머 사용시 주의 점
=============================================================


Jack Ganssle, Asynchronicity, http://www.embedded.com/story/OEG20010615S0111


임베디드OS에서 소프트웨어와 하드웨어가 비동기적으로 동작할 때 문제 발생가능
다음과 같은 예가 있다고 하자.


16비트 하드웨어 타이머가 존재하고
16비트가 꽉차면 하드웨어 타이머 인터럽트가 발생하여
인터럽트 루틴에서 high값을 하나씩 더해 Timer_interrupts를 더해간다고 할때
int Read_timer()
{
    int low = Timer_register; // 하드웨어 현재 타이머 값 읽기 get 0xffff
    // A. 인터럽트 발생가능
    int high = Timer_interrupts;
    return (high<<16)+low;
}


Isr_Timer()
{
   Timer_interrupts++; // 0에서 1로 변경
}


다음의 문제가 생길 수 있다.
현재 0xffff이고 A지점에서 인터럽트가 발생되었다면 인터럽트발생하여 Timer_interrupts는 1이되고 결국 0xffff 시점에서 Read_timer()는
0xffff이나 0x10000을 리턴하는것이 아닌 0x1ffff를 리턴하게 된다.


이를 방지하려면 다음처럼 한다.
unsigned long  Read_timer(void)
{
  unsigned short low, high;
  push_interrupt_state;
  disable_interrupts; // 일단 인터럽트 불가시켜 ISR이 동작되지 않게 한다.


  low=inword(Timer_register);
  high=Timer_interrupts;
  if (inword(timer_overflow)) { // 하드웨어 타이머 레지스터 중 overflow발생체크를 해본다.
    ++high;
    low=inword(timer_register); // overflow되었다면 다시 읽어볼 필요가 있음
  }
  pop_interrupt_state;
  return (((ulong)high)<<16 + (ulong)low);
}


 

'KB > RTOS' 카테고리의 다른 글

OS-Awareness  (0) 2008.03.31
RTOS contraint in application  (0) 2008.03.31
HW타이머 사용시 주의 점  (0) 2008.01.11
RCU (Read Copy Update)  (0) 2006.06.30
rtos stuff  (0) 2006.01.23
[링크-동영상 강좌] 마이크로프로세서의 이해, 그리고 운영체제와의 관계  (1) 2006.01.11
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


RCU (Read Copy Update)

KB/RTOS 2006.06.30 16:00
reader - writer lock의 일종
read-write 락은 read_lock() 도중에도 read_lock()이 들어갈 수 있지만,
write_lock()이 발생되면 reader 또는 writer 모두 read_lock(), write_lock()에서 다쓸때까지 대기해야한다. 즉, 쓰는 동작이 발생하면 무조건 다른 스레드는 다쓸때까지 대기해야한다.

rcu는 쓰기 동작이 발생하면 쓴 내용을 갱신 리스트에 담아 두어, 쓰는 도중에도 reader가 들어와서 읽을 수 있다. reader나 writer가 rcu 임계구간을 나갈때 자신이 마지막이라면 갱신 리스트의 내용을 그 때 실제 쓴다. (지연된 쓰기가 됨)

Kernel Korner - Using RCU in the Linux 2.5 Kernel
http://www.linuxjournal.com/article/6993

Read-copy-update
From Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Read-copy-update

What is RCU?
http://www.rdrop.com/users/paulmck/RCU/whatisRCU.html

Read Copy Update HOWTO
http://lse.sourceforge.net/locking/rcu/HOWTO/intro.html

참고
Memory barrier
From Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Memory_barrier

Lock-free and wait-free algorithms
From Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Lock-free_and_wait-free_algorithms

'KB > RTOS' 카테고리의 다른 글

RTOS contraint in application  (0) 2008.03.31
HW타이머 사용시 주의 점  (0) 2008.01.11
RCU (Read Copy Update)  (0) 2006.06.30
rtos stuff  (0) 2006.01.23
[링크-동영상 강좌] 마이크로프로세서의 이해, 그리고 운영체제와의 관계  (1) 2006.01.11
rtos 관련  (0) 2006.01.11
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


rtos stuff

KB/RTOS 2006.01.23 17:47
http://www.rtosalien.com/papers/

'KB > RTOS' 카테고리의 다른 글

HW타이머 사용시 주의 점  (0) 2008.01.11
RCU (Read Copy Update)  (0) 2006.06.30
rtos stuff  (0) 2006.01.23
[링크-동영상 강좌] 마이크로프로세서의 이해, 그리고 운영체제와의 관계  (1) 2006.01.11
rtos 관련  (0) 2006.01.11
read sector in boot  (0) 2005.10.20
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


http://www.techworld.co.kr/seminar/seminar_content.asp?seminar_no=006

OS 제작의 대부분이라고 할 수 있는 보호모드. 메모리, 인터럽트 등등...
회원가입하시면 무료로 볼 수 있네요. 강사님께서 설명도 잘 해주시고
혼자서 고민하며 공부했던 내용들이 쫙~ 정리되네요.
-----------------------------------

가입은 해야하지만, 이런 고급 주제를...
아직 보진 않았지만 가입은 했습니다 ^^;
( 아이디 7자로 하라는 바람에.. broneri로 가입함, 까먹을까봐 나를 위해서 적어놈;; )

'KB > RTOS' 카테고리의 다른 글

RCU (Read Copy Update)  (0) 2006.06.30
rtos stuff  (0) 2006.01.23
[링크-동영상 강좌] 마이크로프로세서의 이해, 그리고 운영체제와의 관계  (1) 2006.01.11
rtos 관련  (0) 2006.01.11
read sector in boot  (0) 2005.10.20
microkernel  (0) 2005.10.05
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. moonshower 2006.01.13 11:28 신고  댓글주소  수정/삭제  댓글쓰기

    퍼갑니당



rtos 관련

KB/RTOS 2006.01.11 13:58
http://kkamagui.codesum.org/release/rtoslink.html

http://www.itpapers.com/

'KB > RTOS' 카테고리의 다른 글

rtos stuff  (0) 2006.01.23
[링크-동영상 강좌] 마이크로프로세서의 이해, 그리고 운영체제와의 관계  (1) 2006.01.11
rtos 관련  (0) 2006.01.11
read sector in boot  (0) 2005.10.20
microkernel  (0) 2005.10.05
semaphore, mutex, critical section  (0) 2005.10.05
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


read sector in boot

KB/RTOS 2005.10.20 20:11
http://www.osdever.net/tutorials/chs_lba.php?the_id=87

LBA는 1부터 시작하는 논리 섹터
CHS는 실린더, 헤더 섹터로 나뉘는 단위

트랙당섹터수 는 일반적으로 18 (더 클수 있음)
헤드수는 일반적으로 2 (1일 수 있음)

Ralf Brown의 인터럽트 리스트나
BIOS Specification 문서(피닉스 홈피 뒤지면 있음) 보면 그거 나와 있습니다.
INT 13h/AH=08h를 사용하면 현재 사용중인 하드디스크의
Cylinder/Head/Sector 정보가 리턴됩니다.

또 요즘 돌아다니는 기가급 하드들은 이 정보가 다 짜가라는것도 아시죠.
예전 소프트웨어와의 호환성을 위해서 일부러 조작된 값을 보내주죠. 그리고
그 CHS로 액세스할경우 BIOS나 하드디스크 컨트롤러가 알아서 LBA로
바꿔버립니다.

트랙 = 실린더

논리적섹터번호 = (헤드번호 * 트랙당섹터수) + (트랙번호 * 트랙당섹터수*총헤드수) + (섹터번호 -1)

섹터번호 = (LBA % 트랙당섹터수) + 1
트랙번호 = LBA / 트랙당섹터수 / 총헤드수
헤드번호 = LBA / 트랙당섹터수 % 총헤드수

파일이 저장될때 데이터의 저장순서는 보통은 다음과 같습니다.하지만 반드시 그러한 것은 아니며 인터리브방식은 2개이상씩 섹터를 건너뛰며 접근합니다.만약 섹터 1~63 / 트랙 0 ~ 1024 / 헤드 0 ~ 15 인경우설명의 편의상 섹터는 S 트랙은 C 헤드는 H로 표시하겠습니다.S1~63 > H0~15 > C0~1024

종 류 기록 면수 디스크당 트랙수 트랙당 섹터수 섹터당 바이트수 용량
           Head        Cylinder
5.25   2D    2               40             9            512 360KB

5.25  2HD    2               80            15            512 1.2MB

3.5   2DD    2               80             9            512 720KB

3.5   2HD    2               80            18            512 1.44MB

'KB > RTOS' 카테고리의 다른 글

[링크-동영상 강좌] 마이크로프로세서의 이해, 그리고 운영체제와의 관계  (1) 2006.01.11
rtos 관련  (0) 2006.01.11
read sector in boot  (0) 2005.10.20
microkernel  (0) 2005.10.05
semaphore, mutex, critical section  (0) 2005.10.05
os scheduling종류  (0) 2005.10.05
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


microkernel

KB/RTOS 2005.10.05 21:07
http://cafe.naver.com/gaury.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=15879

'KB > RTOS' 카테고리의 다른 글

rtos 관련  (0) 2006.01.11
read sector in boot  (0) 2005.10.20
microkernel  (0) 2005.10.05
semaphore, mutex, critical section  (0) 2005.10.05
os scheduling종류  (0) 2005.10.05
segmentation issue on i386  (0) 2005.09.30
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


오전 11:03 2005-10-05
semaphore, mutex
조경민 bro@shinbiro.com
===================================================

동기화(Synchronization)는 semaphore, critical section, mutex, spinlock 처럼 두
또는 그 이상의 태스크간에 데이터나 코드를 보호 하기 위해서 사용된다.


critical section (conditinal critical region)
-----------------------
태스크들이 동시에 실행할 수 있는 코드 영역을 임계 영역으로 막아 한 순간에
해당 코드 영역은 한 태스크만 실행 할 수 있도록 막는 동기화 객체이다.

인터페이스
enter() - 이 곳부터 한 태스크만 들어올 수 있다. 다른 태스크는 이미 들어온
           태스크가 leave()를 호출 할때까지 enter()안에서 기다린다.
leave() - 임계영역을 나간다. enter()에서 기다리고 있는 태스크를 깨운다.

구현
일반적으로 한개의 프로세서 환경에서 타이머인터럽트나 소프트태스크 스위치를
일으키는 소프트 인터럽트가 발생되지 않도록 인터럽트를 막으면 된다.

intel x86에서는 cli (clear interrupt) sti (set interrupt)를 쓰면 된다.


semaphore
-----------------------
Dijkstra가 제안하여 처음으로 SystemV OS에서 도입됨 이후 posix에 도 도입됨
semaphore는 여러개(N개)의 자원을 여러개(M개)의 태스크가 접근할때 사용하는
동기화 기술이다.
semaphore에는 counter가 존재하며, 태스크는 semaphore 객체를 wait()과 post()
할 수 있다. wait()은 자원을 사용하는 함수이고, post()는 사용한 자원을 풀어주는
역활을 한다. 태스크는 wait()을 호출해 현재 사용가능한 자원이 있으면 사용하고
자원이 없어 counter 가 0 이면 자원이 생길때까지 계속 기다린다.

인터페이스
wait() - if( counter > 0 ) counter--;
          else if( counter == 0  ) 자원이 늘어날때까지 대기.
post() - counter++;

semaphore 생성시 counter를 지정안하면 초기값은 1이다.

구현
wait()과 post()안의 코드를 critical section으로 묶는다.

mutex
-----------------------
semaphore와 비슷하지만 자원(counter) 값이 0, 1이라는 두 값만 갖을 수 있는
이진 semaphore라고 볼 수 있다. 상호배제(Mutual Execusion)이라고 한다.

인터페이스
wait() - if( counter == 1 ) counter = 0;
          else 자원이 1이 될때 까지 대기.
post() - counter = 1;

구현
wait()과 post()안의 코드를 critical section으로 묶는다.


signal (condition)
------------------------

인터페이스
wait() - 시그널을 기다린다.
signal() - wait 상태인 쓰레드를 깨우기 위해 시그널을 전송한다.
broadcast() - signal과 유사하지만 wait 상태인 모든 쓰레드를 깨운다.

구현
wait()과 post()안의 코드를 critical section으로 묶는다.


spinlock
------------------------
ciritical section과 비슷하나 멀티 프로세서 환경(정확히는 SMP)에서 한 순간에
하나의 cpu만이 동작할 수 있도록 동기화하는 기술.

인터페이스
lock() - 이 곳부터 한 태스크만 들어올 수 있다. 다른 태스크는 이미 들어온
         태스크가 unlock()를 호출 할때까지 lock()안에서 기다린다.
unlock() - lock()에서 기다리고 있는 태스크를 깨운다.

구현
intel cpu 계열에서는 XCHG 명령어를 이용하여 구현


*SMP(Symmetric Multi Processing): 대칭형 멀티프로세싱 구조로 여러 프로세서가
하나의 메모리와 입출력, 데이터 버스를 공유하는 형식의 멀티 프로세싱 구조

'KB > RTOS' 카테고리의 다른 글

read sector in boot  (0) 2005.10.20
microkernel  (0) 2005.10.05
semaphore, mutex, critical section  (0) 2005.10.05
os scheduling종류  (0) 2005.10.05
segmentation issue on i386  (0) 2005.09.30
POSIX  (0) 2005.09.30
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


티스토리 툴바