소켓 관련 질문

익명 사용자의 이미지

이번 학기의 프로젝트가 스케쥴러 만들기입니다.

그런데 조건이 서로 프로세스들을 주고 받을 때

소켓을 이용해야 한다는 것입니다.

저의 궁금증은

소켓으로 하려면 서버와 클라이언트의 개념으로써

서버의 아이피와 포트를 지정해줘야 하지 않습니까

1). 그런데 같은 컴퓨터 내에서 같은 프로그램내에서

서버와 클라이언트를 함수로 나누어

통신이 가능한지요?

2). 그리고 같은 컴퓨터 내에서 같은 프로그램인데요

서버의 아이피와 포트를 지정하지 않고도 가능한지요?

만약 가능하다면 어떻게 해야 하나요?

익명 사용자의 이미지

질문 1번 가능
질문 2번 불가능(?) 일겁니다.
그런데 같은컴의 같은 프로그램 에서 TCP 등의 통신을 한다는건
비효율적이겠죠.
통신을 할 이유가 전혀 없는데.
즐거운 프로그램 하세요.

익명 사용자의 이미지

c/s상황에서 꼭 TCP/IP모델만을 두고 이야기하는 것이 아닙니다.
그러므로 생소켓으로 얼마든지 임의대로 만들 수 있습니다.

1). 그런데 같은 컴퓨터 내에서 같은 프로그램내에서

서버와 클라이언트를 함수로 나누어

통신이 가능한지요?

------> 혹시 쓰레드를 이용하란 소리가 아닐런지...
쓰레드를 이용하면 설계가 쉬운뎅....
fork를 이용하면 설계가 어려울듯....

2). 그리고 같은 컴퓨터 내에서 같은 프로그램인데요

서버의 아이피와 포트를 지정하지 않고도 가능한지요?

만약 가능하다면 어떻게 해야 하나요?

-----> 생소켓으로 만들면 가능하겠네요.

흠... 잘하면 프로토콜을 새로만들어 보는것도 실력향상에 엄청 도움이 되
겠군요.

햐~~ 요즘 학교가 이런걸 다합니까?
아니면, 대학원입니까? 대학원 같은뎅......

혹시 알바생 필요하면 불러주슈~~~ 그럼 이만. 헤헤

익명 사용자의 이미지

unix domain socket 를 사용한
통신이 가능하겠죠..
대표적으로 X server 가 unix domain socket
를 이용한 응용 풀그림입니다.
외부에서의 연결은 INET연결을 이용하고 ,
내부에서의 연결은 UNIX 연결을 이용합니다.

그리고 tcp/udp 모두를 이용한 통신이 가능합니다.
물론 통신을 위해서 ip 가 전달되는건 아니구요.
파일이름이 전달됩니다.
IPC로 분류될수 있겠죠.

익명 사용자의 이미지

궁금해서 그런데요...
내부에서 연결을 pipe를 쓴다든지 하는 것과
UNIX Domain socket을 쓰는 것을 비교한다면 어떤 장단점이 있나요?

yundream wrote..
외부에서의 연결은 INET연결을 이용하고 ,
내부에서의 연결은 UNIX 연결을 이용합니다.

익명 사용자의 이미지

우선 답변을 달아주신 모든 분들께 감사 드립니다

우선 process scheduler는 fork와 socket을 사용해야만 하구요

전 대학원생이 아니라 대학생입니다 ^^;;

전북대학교 전자정보공학부 3학년 1학기 과정에 있는 "운영체제"라는 과목
입니다 -)

익명 사용자의 이미지

process scheduler는 fork와 socket로 이루어져야 한다고 하셨는데,
그렇다면,
스케쥴러는 커널레벨이 아닌 응용레벨입니까?
운용체제는 리눅스입니까?

익명 사용자의 이미지

kernel level과 응용 level을 정확히 모르겠는데요

커널에 직접적인 접근이 없고

모의 실험만을 하기에 응용 level로 추정됩니다.

그리고 운영체제는 불문입니다

익명 사용자의 이미지

그러면 스케쥴러는 어떤 스케쥴러인가요?
라운드로빈????
아니면,,, 흐흐 FIFO인가요????
아니면, SRT인가요????

익명 사용자의 이미지

FIFO, RR, SJF

3가지 모두 각각 구현하고

결과물을 분석하여 그래프로 그려야 합니다. ^^;;

익명 사용자의 이미지

답변 달아주신 모든 분 들께 감사합니다[내용無]

익명 사용자의 이미지

허접생각이지만,

일단 틱을 다루는 타이머를 제일 먼저 구현해야하겠고, 이 타이머는 메인
프로세스에게 일정 틱마다 시그널이 걸리도록 해야겠고, 그 시그널이 걸렸
을 때 스케쥴러가 구현되어야할듯하네요.

이 때의 스케쥴러를 sjf, RR, FIFO 세가지로 구현하면 될듯...

그러면, 메인프로세스는 현재 작업중인 자식 프로세스에게 특정 메시지를
보내서 sleep을 할 수 있도록 하고, 그다음 작업할 프로세스를 선택해서
작업을 하면 될 듯하네요.

그러니까, 모든 프로세스들을 초기에는 sleep상태로 만들어 버리고, 그다
음에는 메인프로세스가 스케쥴러를 구동해서 하나의 자식프로세스를 선택
해서 작동하도록 해야하겠네요.

익명 사용자의 이미지

감사 -)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.