Линукс нь POSIX найдвартай дохио (цаашид "стандарт дохио") болон POSIX бодит цагийн дохионуудыг дэмждэг.
Стандарт дохио
Линукс доор дурдсан стандарт дохиог дэмждэг. Хэд хэдэн дохионы тоо нь "Утга" баганад харуулснаар архитектур хамааралтай байдаг. (Гурван утгыг өгөгдсөн бол эхнийх нь альфа болон sparc-д, i386, ppc, sh-д зориулсан дунд, мөн хамгийн сүүлийнх нь мембранд зориулагдсан байдаг.
A - харгалзах архитектур дээр дохио байхгүй байгааг илэрхийлнэ.)
Хүснэгтийн "Үйлдлийн" баганын оруулгууд дохионуудын анхдагч арга хэмжээг зааж өгдөг:
Хугацаа
Анхдагч үйлдэл нь процессийг цуцлах явдал юм.
Ign
Анхдагч үйлдэл нь дохио өгөхгүй байх явдал юм.
Гол
Анхдагч үйлдэл нь процесс болон dump цөмийг зогсоох явдал юм.
Зогс
Анхдагч үйлдэл нь процессийг зогсоох явдал юм.
Анхдагч POSIX.1 стандартад заасан дохио.
Дохиолол | Утга | Үйлдэл | Сэтгэгдэл бичих |
эсвэл хяналтын үйл явцын үхэл | |||
SIGINT | 2 | Хугацаа | Гараас тасалдал хийх |
SIGQUIT | 3 | Гол | Гараас гарна уу |
SIGILL | 4 | Гол | Хууль бус зааварчилгаа |
SIGABRT | 6 | Гол | Эс бөглөх дохио (3) |
SIGFPE | 8 | Гол | Хөвөх цэгийн онцгой тохиолдол |
SIGKILL | 9 | Хугацаа | Дохио алах |
SIGSEGV | 11 | Гол | Санах ойн лавлагаанд буруу байна |
SIGPIPE | 13 | Хугацаа | Эвдрэлтэй хоолой: Уншигчидтай хоолойгоор бичих |
SIGALRM | 14 | Хугацаа | Сэрүүлгийн цагаар дохио өгөх (2) |
SIGTERM | 15 | Хугацаа | Дуусах дохио |
SIGUSR1 | 30,10,16 | Хугацаа | Хэрэглэгчийн тодорхойлсон дохио 1 |
SIGUSR2 | 31,12,17 | Хугацаа | Хэрэглэгчийн тодорхойлсон дохио 2 |
SIGCHLD | 20,17,18 | Ign | Хүүхэд зогссон буюу дуусгавар болсон |
SIGCONT | 19,18,25 | Хэрвээ зогсвол үргэлжлүүл | |
SIGSTOP | 17,19,23 | Зогс | Үйл явцыг зогсоох |
SIGTSTP | 18,20,24 | Зогс | Tty дээр дарж зогсоох |
SIGTTIN | 21,21,26 | Зогс | суурь процессод зориулсан tty оролт |
SIGTTOU | 22,22,27 | Зогс | суурь процессод зориулсан tty гаралт |
SIGKILL болон SIGSTOP дохионуудыг барьж, блоклох эсвэл үл тоомсорлох боломжгүй.
Дараа нь POSIX.1 стандартаар биш боловч SUSv2 болон SUSv3 / POSIX 1003.1-2001-д тайлбарласан дохиогоор оруул.
Дохиолол | Утга | Үйлдэл | Сэтгэгдэл бичих |
SIGPOLL | Хугацаа | Хортой үйл явдал (Sys V). SIGIO гэсэн нэр томъёо | |
SIGPROF | 27,27,29 | Хугацаа | Профайл таймер дууссан |
SIGSYS | 12, -, 12 | Гол | Өдөр тутмын муу маргаан (SVID) |
SIGTRAP | 5 | Гол | Уламжлалт / завсарлагааны цоорхой |
SIGURG | 16,23,21 | Ign | Сокет дээр яаралтай нөхцөл (4.2 BSD) |
SIGVTALRM | 26,26,28 | Хугацаа | Виртуал сэрүүлэгтэй цаг (4.2 BSD) |
SIGXCPU | 24,24,30 | Гол | CPU-ийн цагийн хязгаар хэтэрсэн (4.2 BSD) |
SIGXFSZ | 25,25,31 | Гол | Файлын хэмжээ хязгаар хэтэрсэн (4.2 BSD) |
Линукс 2.2 хүртэл, SIGSYS , SIGXCPU , SIGXFSZ болон SPARC ба MIPS-ээс бусад архитектурын протоколууд ( SIGBUS- ийн үндсэн үйл явцыг зогсоох ёстой байсан). (Зарим бусад Unices дээр SIGXCPU болон SIGXFSZ- ийн үндсэн үйлдэл нь үндсэн хаяггүйгээр процессыг зогсоох явдал юм.) Линукс 2.4 нь эдгээр дохионуудын POSIX 1003.1-2001 шаардлагуудтай нийцэж байгаа бөгөөд процессыг үндсэн хаягдлаар дуусгавар болгодог.
Дараагийн янз бүрийн бусад дохионууд.
Дохиолол | Утга | Үйлдэл | Сэтгэгдэл бичих |
SIGEMT | 7, -, 7 | Хугацаа | |
SIGSTKFLT | -, 16, - | Хугацаа | Coprocessor дээр ашиглагдаагүй овоолсон гэмтэл (ашиглагдаагүй) |
SIGIO | 23,29,22 | Хугацаа | I / O одоо боломжтой (4.2 BSD) |
SIGCLD | -, -, 18 | Ign | SIGCHLD-д ижил утгатай |
SIGPWR | 29,30,19 | Хугацаа | Цахилгаан тасарсан (Системийн V) |
SIGINFO | 29, -, - | SIGPWR-тэй ижил утгатай | |
SIGLOST | -, -, - | Хугацаа | Файл түгжигдсэн байна |
SIGWINCH | 28,28,20 | Ign | Цонхны хэмжээг өөрчлөх (4.3 BSD, Sun) |
SIGUNUSED | -, 31, - | Хугацаа | Ашиглагдаагүй дохио (SIGSYS байх болно) |
(Signal 29 бол SIGINFO / SIGPWR альфа дээр SIGLOST гэх мэт).
SIGEMT нь POSIX 1003.1-2001-д зааж өгөөгүй боловч ихэнх бусад Unices дээр энэ нь үндсэн процессыг үндсэн хаягдлаар дуусгавар болгодог бөгөөд нээгдээгүй байна.
SIGPWR (POSIX 1003.1-2001-д зааж өгөөгүй байдаг) энэ нь ихэвчлэн гарч ирсэн бусад Юниксууд дээр үндсэндээ үл тоомсорлодог.
SIGIO (POSIX 1003.1-2001-д зааж өгөөгүй байдаг) нь хэд хэдэн бусад Unices дээр анхдагчаар хэрэглэгддэггүй.
Бодит цагийн дохио
Линукс нь анхдагч POSIX.4 бодит цагийн өргөтгөлүүдийг (одоо POSIX 1003.1-2001-д оруулсан) бодит цагийн дохиог дэмждэг. Линукс нь 32 ( SIGRTMIN ) дугаартай 32 ( SIGRTMAX ) дугаарлагдсан 32 бодит цагийн дохиог дэмждэг. (Хөтөлбөрүүд нь SIGRTMIN + n тэмдэглэгээг ашиглан бодит цагийн дохиог байнга лавлаж байх ёстой. Учир нь бодит цагийн дохионы тоо нь Unices -ийн дагуу өөр өөр байдаг.)
Стандарт дохионоос ялгаатай нь бодит цагийн дохио нь урьдчилан тодорхойлогдоогүй утгатай: бодит цагийн дохионы бүхэл бүтэн багцыг хэрэглээнд тодорхойлсон зорилгод ашиглаж болно. (Гэхдээ LinuxThreads хэрэгжилт нь эхний гурван бодит дохиог ашигладаг болохыг анхаарна уу.)
Байнгын бус бодит дохиог анхдагч үйлдэл нь хүлээн авах ажиллагааг зогсоох явдал юм.
Бодит цагийн дохиог дараах байдлаар ялгаатай байна.
- Бодит цагийн дохионы олон тохиолдлыг дарааллуулж болно. Эсрэгээр, хэрэв дохиог одоогоор түгжигдэх үед стандарт дохионы олон жишээг хүргэж байгаа бол зөвхөн нэг тохиолдол дараалалд орно.
- Хэрэв дохио нь sigqueue (2) ашиглан илгээгдсэн бол дагалдах дагалдах утга (бүхэл тоо эсвэл заагч) дохио өгч болно. Хүлээн авах процесс нь SA_SIGACTION тугийг мангас (2) болгон ашиглана. Энэ тохиолдолд өгөгдлийг siginfo_t-ийн si_value талбараар дамжуулан өгөгдлийг олж авч болно. Үүнээс гадна, энэхүү бүтцийн si_pid болон si_uid талбарууд нь PID болон дохио илгээж байгаа процессорын жинхэнэ хэрэглэгчийн ID-г олж авахад хэрэглэгдэж болно.
- Бодит цаг хугацааны дохиог баталгаатай захиалгаар хүргэдэг. Ижил төрлийн олон удаагийн бодит дохиог илгээсэн дарааллаар нь хүргэдэг. Хэрэв бодит цагийн дохионууд процесс руу илгээгдвэл хамгийн бага дугаартай дохиог эхэлнэ. (Ийнхүү, бага тооны дохио нь хамгийн чухал байдаг.)
Хэрэв стандарт болон бодит цагийн хоёулаа процесст хүлээгдэж байгаа бол POSIX эхлээд хүргэгдээгүй тодорхойлогдоно. Линукс нь бусад олон шийдлүүдийн нэгэн адил энэ тохиолдолд стандарт дохионоос давуу эрх олгодог.
POSIX-ийн дагуу шийдэл нь процесст дараалал өгөх дараагийн _POSIX_SIGQUEUE_MAX (32) -ийн хамгийн бага дохио зөвшөөрөх ёстой. Гэсэн хэдий ч, процесс бүрт тавигдах хязгаарлалт тавихын оронд Линукс бүх процессийн хувьд дараалсан бодит цагийн дохионуудын тоог системийн хэмжээнд хамруулах боломжийг олгодог.
Энэ хязгаарыг / proc / sys / kernel / rtsig-max файлаар өөрчилж үзэж болно. Холбогдох файл, / proc / sys / kernel / rtsig-max нь одоогоор хэд хэдэн бодит цагийн дохионуудыг хүлээлгэн өгдөг.
ТАЙЛБАР
POSIX.1
Чухал: Тушаалын командыг ашиглана ( % man ) ашиглана.