Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Session 5 Report #32

Open
22 tasks done
hamriouz opened this issue Aug 6, 2024 · 0 comments
Open
22 tasks done

Session 5 Report #32

hamriouz opened this issue Aug 6, 2024 · 0 comments
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@hamriouz
Copy link

hamriouz commented Aug 6, 2024

Team Name: 99109799-99105594

Student Name of member 1: Hamraz Arafati / همراز عرفاتی
Student No. of member 1: 99109799

Student Name of member 2: Amirhossein Abedi / امیرحسین عابدی
Student No. of member 2: 99105594

  • Read Session Contents.

Section 5.3.1

  • Write the Hello World! program

    • image
      image
  • Write the ls to wc program

    • image
      image
  • Investigate how to have a bi-direction pipe

    • همانطور که دیدیم روشی که در قسمت قبل استفاده کردیم یکسویه است به این معنی که والد فقط می‌نویسد و فرزند فقط می‌خواند. یک روش ساده برای بدست آوردن ارتباط دو سویه این است که از دو پایپ استفاده کنیم. یک پایپ مخصوص نوشتن پیام‌های والد و دیگری مخصوص نوشتن پیام‌های فرزند است و دو پردازه با هم هماهنگ هستند که برای نوشتن و خواندن از کدام استفاده کنند. یک روش دیگر هم استفاده از socketpair است. این روش مانند pipe کار می‌کند با این فرق که انعطاف‌پذیری بیشتری از لحاظ خواندن و نوشتن دوسویه به ما ارائه می‌دهد.

Section 5.3.2

  • Describe the usecase of different signals:

    1. از این سیگنال برای ارسال interrupt به یک پردازه استفاده می‌شود که معمولا توسط ctrl-c ساخته می‌شود. از این سیگنال استفاده می‌شود که یک پردازه در حال اجرا را پایان دهد.
    2. این سیگنال، سیگنال Hang up می‌باشد که در گذشته برای این استفاده می‌شده است که به یک پردازه اطلاع دهد که ترمینال در حال اجرای آن بسته شده است. امروزه از این سیگنال برای این استفاده می‌شود که به پردازه‌هایی که در پس‌زمینه در حال اجرا هستند اطلاع داده شود که بدون اینکه restart شوند و یا از اول شروع به کار کنند، فایل config خود را دوباره نگاه کنند.
    3. از این سیگنال برای این استفاده می‌شود که یک پردازه در حال اجرا را متوقف کند. از این سیگنال برای دیباگ و یا توسط سیستم برای scheduling استفاده می‌شود. همینطور این سیگنال بر خلاف SIGSTP قابل ایگنور و یا هندل کردن نیست.
    4. با استفاده از این سیگنال،‌ پردازه‌ای که توسط SIGSTOP و یا SIGSTP متوقف شده است ادامه به کار می‌دهد.
    5. این سیگنال به کار یک پردازه پایان می‌دهد. این سیگنال به صورت force اجرا می‌شود. این سیگنال در کنار SIGSTOP تنها دو سیگنالی هستند که نمی‌توانند هندل و یا ایگنور شوند.
  • Describe SIGALRM

    1. این سیگنال به طور معمول توسط تابع alarm فرستاده می‌شود. این تابع بعد از منقضی شدن زمان داده شده به آن به همین پردازه یک سیگنال SIGALRM می‌فرستند. این سیگنال استفاده های زیادی دارد به طور مثال می‌توانیم از آن برای پیاده‌سازی timeout استفاده کنیم به طوری که اگر زمان مشخصی از یک اتفاق گذشت تایم‌اوت داشته باشیم. همینطور می‌توانیم از آن برای پیاده‌سازی کارهای دوره‌ای استفاده کنیم. به طور مثال اگر کاری قرار است هر ۶۰ ثانیه یکبار رخ دهد می‌توانیم از alarm و با فرستادن سیگنال SIGALRM استفاده کنیم. به طور کلی این سیگنال برای فرستادن یک زنگ از پیش تعیین شده برای پردازه استفاده می‌شود.
  • Investigate the given code

    1. این کد در ابتدا تنظیم می‌شود که ۵ ثانیه بعد از اجرای خط alarm یک سیگنال SIGALRM به پردازه ارسال کند. بعد از اینکه خط Looping چاپ شد و برنامه وارد لوپ شد، بعد از چندثانیه سیگنال SIGALRM به پردازه می‌رسد. چون از قبل هندلری برای این سیگنال تعریف نشده است، هندلر دیفالت برای این سیگنال صدا زده می‌شود که چاپ Alarm clock و terminate شدن برنامه است.
    2. image
  • Modify the given program by handling SIGALRM

    1. image
      image
      image
  • Write a program that handles Ctrl + C

    1. image
      image

source.codes.zip

@hamriouz hamriouz added the documentation Improvements or additions to documentation label Aug 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants