MCA CET तयारी English

विभाग · 20 प्रश्न · 40 गुण

संगणक संकल्पना

संगणकाची मूलतत्त्वे, डेटाचे निरूपण व द्विमान अंकगणित, बूलियन बीजगणित, संगणक संरचना व interrupts, assembly व उच्चस्तरीय भाषा, C प्रोग्रामिंग आणि ऑपरेटिंग सिस्टमची मूलतत्त्वे.

संपूर्ण विभाग, एका चित्रात

संगणक म्हणजे व्यवस्थित चालणारं हॉटेलचं स्वयंपाकघर. CPU हा आचारी, RAM म्हणजे ओट्यावरची मोकळी जागा, हार्ड डिस्क म्हणजे कोठीची खोली, OS म्हणजे ऑर्डर वाटणारा मॅनेजर, आणि binary म्हणजे चालू/बंद अशी सोपी भाषा जी प्रत्येक कामगाराला कळते.

अधिकृत अभ्यासक्रम: संगणकाची मूलतत्त्वे; डेटाचे निरूपण (द्विमान अंकगणित, two’s complement, floating point, बूलियन बीजगणित, सत्यता सारणी, वेन आकृती); संगणक संरचना; संगणक भाषा (assembly, उच्चस्तरीय भाषा, C प्रोग्रामिंग); ऑपरेटिंग सिस्टमची मूलतत्त्वे.

16 पैकी 0 विषय पूर्ण · 64 सराव प्रश्न · संगणक: झटपट सराव →

संगणक · संगणकाची मूलतत्त्वे · विषय 1 / 16

संगणकाची रचना आणि CPU

Computer Organization and the CPU

असं समजा…

किराणा दुकानदार आणि सामानाची चिठ्ठी

कोल्हापूरच्या एका गल्लीत रमेशचं किराणा दुकान आहे. एक गिऱ्हाईक त्याच्या हातात चिठ्ठी ठेवतं: "1 kg साखर, 2 पुडे Parle-G, 500 g तूरडाळ". पुढे जी ओळ करायची आहे, त्या ओळीवर रमेश बोट ठेवतो. ती ओळ तो वाचतो (fetch), तिचा अर्थ समजून घेतो — कोणत्या फळीवरचं, किती (decode) — मग माल तोलतो आणि त्याची किंमत आपल्या छोट्या पाटीवरच्या चालू बेरजेत मिळवतो (execute). बोट पुढच्या ओळीवर सरकतं आणि चिठ्ठी संपेपर्यंत हेच चक्र चालू राहतं. ती चिठ्ठी म्हणजे मेमरीत ठेवलेला program; त्याचं बोट म्हणजे Program Counter; प्रत्येक ओळ समजून घेऊन हातांना काय करायचं ते सांगणारा त्याचा मेंदू म्हणजे Control Unit; कॅल्क्युलेटर म्हणजे ALU; आणि चालू बेरीज धरून ठेवणारी पाटी म्हणजे एक register (accumulator). लक्षात घ्या — त्याचा मेंदू स्वतः काहीच तोलत नाही, बेरीजही करत नाही; तो फक्त हुकूम देतो. Control Unit नेमकं हेच करतो.

रोजच्या जीवनातपरीक्षेच्या विषयात
गिऱ्हाइकाची चिठ्ठी (क्रमाने लिहिलेले सामान)मुख्य मेमरीत साठवलेला program
पुढे करायच्या ओळीवर ठेवलेलं बोटProgram Counter (PC)
आत्ता वाचत असलेली ओळInstruction Register (IR)
मेंदू: ओळ समजून घेतो, हातांना हुकूम देतोControl Unit — decode करून control signals पाठवतो
कॅल्क्युलेटर + चालू बेरजेची पाटीALU + accumulator register

संकल्पना

जवळजवळ प्रत्येक संगणक (computer) von Neumann (stored-program) प्रारूप पाळतो: program आणि त्याचा data दोन्ही एकत्र मुख्य स्मृतीत (main memory) असतात आणि CPU एका वेळी एक instruction आणतो. संगणकात पाच कार्यात्मक घटक असतात — input, मेमरी, ALU, control unit, output. CPU म्हणजे ALU + control unit + registers, एकाच chip वर.

ALU (अंकगणित व तर्क एकक — Arithmetic Logic Unit) अंकगणित (+, −) आणि तार्किक क्रिया (AND, OR, NOT, तुलना) करतो. Control Unit (नियंत्रण एकक) कोणत्याही data वर स्वतः प्रक्रिया करत नाही: तो प्रत्येक instruction decode करतो आणि clock च्या तालावर इतर सर्व घटकांना control signals (memory read, memory write, ALU ने कोणती क्रिया करायची) पाठवतो. Registers म्हणजे CPU च्या आतली अगदी छोटी, सर्वांत वेगवान साठवण जागा: PC, IR, MAR, MDR (यालाच MBR म्हणतात), accumulator आणि flag (status) register.

CPU instruction cycle सतत पुन्हा पुन्हा चालवतो: fetch (MAR ← PC; MDR ← M[MAR]; IR ← MDR; PC ← PC + 1), decode (CU opcode वाचतो), execute (ALU, मेमरी किंवा I/O क्रिया; flags अद्ययावत होतात). त्यानंतर interrupt आला आहे का ते तपासतो आणि पुन्हा सुरुवात करतो. वेग clock ठरवतो: 2 GHz clock म्हणजे दर सेकंदाला 2 × 10⁹ cycles, म्हणून एक cycle 0.5 ns चा असतो.

महत्त्वाचे मुद्दे व सूत्रे

  • CPU = ALU + Control Unit + registers; CU हुकूम देतो, ALU हिशोब करतो
  • PC: पुढच्या instruction चा address; IR: आत्ता execute होत असलेली instruction
  • MAR: मेमरीकडे पाठवलेला address; MDR/MBR: मेमरीकडून येणारा किंवा मेमरीकडे जाणारा data
  • Accumulator मध्ये ALU चे निकाल राहतात; flag register मध्ये Zero, Sign, Carry, Overflow bits असतात
  • Fetch: MAR ← PC → MDR ← M[MAR] → IR ← MDR, PC ← PC + 1
  • Clock period = 1 ÷ frequency; instruction ला लागणारा वेळ = cycles × period
  • Von Neumann: program आणि data साठी एकच मेमरी (“von Neumann bottleneck”); Harvard: instructions आणि data साठी वेगवेगळ्या मेमरी
  • Control unit ची रचना: hardwired (वेगवान, ठरलेले logic) किंवा microprogrammed (control memory, बदल करणे सोपे)

सोडवलेले उदाहरण

मेमरीत address 100–102 वर हा program आहे: LOAD 500, ADD 501, STORE 502. M[500] = 7 आणि M[501] = 5. PC 100 पासून सुरू होतो. registers चा मागोवा घ्या. शेवटी M[502] आणि PC किती?

उकल पाहा
  1. Fetch 1: MAR ← 100, IR ← LOAD 500, PC ← 101. Execute: AC ← M[500] = 7.
  2. Fetch 2: MAR ← 101, IR ← ADD 501, PC ← 102. Execute: ALU बेरीज करतो, AC ← 7 + M[501] = 12.
  3. Fetch 3: MAR ← 102, IR ← STORE 502, PC ← 103. Execute: M[502] ← AC = 12.
  4. प्रत्येक fetch च्या वेळी PC एकने वाढतो, म्हणून तीन instructions नंतर तो 103 कडे निर्देश करतो.

उत्तर: M[502] = 12, PC = 103

परीक्षेसाठी झटपट युक्ती

“कोणता register” असा प्रश्न आला की स्वतःला विचारा: यात address आहे की content? Address PC आणि MAR मध्ये राहतात; content IR, MDR आणि accumulator मध्ये. Clock च्या प्रश्नांसाठी, ns मधील period = 1 ÷ (GHz ची किंमत): 2.5 GHz → 0.4 ns.

नेहमीच्या चुका

  • PC मध्ये चालू instruction चा नव्हे, तर पुढच्या instruction चा address असतो (fetch च्या वेळीच तो वाढवला जातो).
  • Control Unit कोणताही हिशोब करत नाही; a < b सारखी तुलनासुद्धा ALU च करतो.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. Which register holds the address of the next instruction to be fetched?

पुढे fetch होणाऱ्या instruction चा address कोणत्या register मध्ये असतो?

Q2. Which sequence correctly describes the fetch phase of the instruction cycle?

Instruction cycle मधील fetch टप्प्याचे अचूक वर्णन कोणता क्रम करतो?

Q3. Which unit of the CPU interprets instructions and generates timing and control signals, but does not itself process data?

CPU चा कोणता घटक instructions चा अर्थ लावतो आणि timing व control signals निर्माण करतो, पण स्वतः data वर प्रक्रिया करत नाही?

Q4. A processor runs at 2.5 GHz. An instruction needs 5 clock cycles. How long does the instruction take?

एक processor 2.5 GHz वर चालतो. एका instruction ला 5 clock cycles लागतात. त्या instruction ला किती वेळ लागेल?

↑ विषयसूचीकडे परत

संगणक · संगणकाची मूलतत्त्वे · विषय 2 / 16

Instruction ची रचना आणि Addressing Modes

Instruction Structure and Addressing Modes

असं समजा…

मुंबईच्या डबेवाल्यांचा झाकणावरचा कोड

मुंबईचे डबेवाले रोज लाखो डबे पोहोचवतात, आणि चुका जवळजवळ होतच नाहीत — प्रत्येक झाकणावर रंगवलेल्या एका छोट्या कोडच्या जोरावर. प्रत्येक डबा म्हणजे एक instruction समजा: काम ठरलेलं आहे — “हा डबा पोहोचव” (हा opcode) — आणि रंगवलेला कोड सांगतो कुठे (हे address field). कधी कधी हवी असलेली गोष्ट डब्यातच असते, जसं आत ठेवलेली पैशांची चिठ्ठी — कुठे जायची गरजच नाही (immediate). बहुतेक वेळा झाकणावर ऑफिसचं नेमकं टेबलच लिहिलेलं असतं (direct). कधी झाकणावर फक्त “चर्चगेटच्या sorting desk वर विचारा” एवढंच असतं, आणि तो desk खरं ऑफिस सांगतो — म्हणजे एक जास्तीची फेरी (indirect). आणि कधी लिहिलेलं असतं “इमारत 4, तिथून 3 मजले वर” — एक ठरलेली सुरुवात आणि त्यात एक मोजणी (indexed / base + offset). डबा पोहोचवण्याचं काम एकच, फक्त जागा सांगण्याच्या पद्धती वेगवेगळ्या — addressing modes म्हणजे एवढंच.

रोजच्या जीवनातपरीक्षेच्या विषयात
चिठ्ठीवरचं काम: “पोहोचव”Opcode (कोणती क्रिया)
डब्यातच ठेवलेले पैसेImmediate: operand instruction मध्येच असतो
झाकणावर ऑफिसचं नेमकं टेबलDirect: address field = effective address
झाकण म्हणतं “sorting desk वर विचारा”; desk खरा पत्ता देतोIndirect: EA = M[address field] (एक जास्तीचा memory access)
“इमारत 4, तिथून 3 मजले वर”Indexed / base: EA = register + offset

संकल्पना

Instruction म्हणजे bits चा एक नमुना, जो fields मध्ये विभागलेला असतो: एक opcode (कोणती क्रिया) आणि एक किंवा अधिक operand/address fields (data कुठे आहे). Opcode साठी n bits असतील तर CPU मध्ये जास्तीत जास्त 2n वेगवेगळ्या क्रिया असू शकतात. Address च्या संख्येनुसार instructions चे प्रकार: 3-address (ADD R1, R2, R3), 2-address (ADD R1, R2), 1-address (ADD X, दुसरा operand accumulator असतो) आणि 0-address (stack वरचा ADD, postfix evaluation साठी वापरतात).

Addressing mode CPU ला operand कसा शोधायचा ते सांगतो; शेवटी जो memory address वापरला जातो तो effective address (EA). Immediate: operand instruction मध्येच (memory access नाही). Direct: EA = address field. Indirect: EA = M[address field], म्हणून एक जास्तीचा memory access. Register: operand register मध्ये. Register indirect: EA = register मधील किंमत. Indexed: EA = address field + index register (arrays साठी उपयोगी). Relative: EA = PC + offset (branches आणि relocatable code साठी उपयोगी). Implied: operand opcode नेच ठरलेला असतो (उदा. CMA, accumulator चा complement).

महत्त्वाचे मुद्दे व सूत्रे

  • Instruction = opcode + address field(s); n opcode bits → 2n क्रिया
  • Address साठीचे bits = instruction ची लांबी − opcode bits − register-field bits
  • Immediate: operand = instruction मधील किंमत (एक constant, memory access नाही)
  • Direct: EA = A; Indirect: EA = M[A] (एक जास्तीचा memory reference)
  • Register indirect: EA = (R); Indexed: EA = A + (XR); Base: EA = (BR) + A
  • PC-relative: EA = PC + offset, आणि PC आधीच पुढच्या instruction कडे निर्देश करत असतो
  • 0-address instructions stack वर काम करतात (PUSH, POP, ADD) — postfix रूप

सोडवलेले उदाहरण

एका instruction चे address field 300 आहे आणि index register XR मध्ये 100 आहे. मेमरी: M[300] = 500, M[400] = 700, M[500] = 800. Immediate, direct, indirect आणि indexed modes मध्ये operand काढा.

उकल पाहा
  1. Immediate: address field हाच operand → 300.
  2. Direct: EA = 300, operand = M[300] → 500.
  3. Indirect: EA = M[300] = 500, operand = M[500] → 800.
  4. Indexed: EA = 300 + 100 = 400, operand = M[400] → 700.

उत्तर: Immediate 300, Direct 500, Indirect 800, Indexed 700

परीक्षेसाठी झटपट युक्ती

Instruction fetch झाल्यानंतर operand मिळवायला मेमरीच्या किती फेऱ्या लागतात ते मोजा: immediate 0, register 0, direct 1, register indirect 1, indexed 1, indirect 2. मग “सर्वांत वेगवान / सर्वांत संथ mode” असे प्रश्न आपोआप सुटतात.

नेहमीच्या चुका

  • PC-relative mode मध्ये offset हा वाढवलेल्या PC मध्ये (म्हणजे पुढच्या instruction च्या address मध्ये) मिळवला जातो, branch instruction च्या स्वतःच्या address मध्ये नाही — प्रश्नात वेगळं सांगितलं नसेल तर.
  • Immediate mode म्हणजे “वेगवान मेमरी” नव्हे; त्याचा अर्थ operand साठी मेमरीत जावंच लागत नाही.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. In which addressing mode is the operand itself part of the instruction?

कोणत्या addressing mode मध्ये operand स्वतःच instruction चा भाग असतो?

Q2. Which addressing mode needs two memory references to get the operand (after the instruction has been fetched)?

कोणत्या addressing mode मध्ये operand मिळवायला (instruction fetch झाल्यानंतर) दोन memory references लागतात?

Q3. A computer has 32-bit instructions and 128 different operations. Each instruction has one register operand (32 registers) and one memory address field. How many bits are left for the memory address?

एका संगणकात 32-bit instructions आणि 128 वेगवेगळ्या क्रिया आहेत. प्रत्येक instruction मध्ये एक register operand (32 registers) आणि एक memory address field आहे. Memory address साठी किती bits उरतात?

Q4. A 2-word branch instruction using PC-relative addressing is stored at address 1000 (word-addressable memory). Its offset field is +20, and the offset is added to the PC after the instruction has been fetched (the PC has already been advanced past it). What is the target (effective) address?

PC-relative addressing वापरणारी 2-word branch instruction address 1000 वर साठवलेली आहे (word-addressable मेमरी). तिचे offset field +20 आहे, आणि instruction fetch झाल्यानंतर (PC तिच्या पुढे सरकल्यानंतर) offset PC मध्ये मिळवला जातो. Target (effective) address किती?

↑ विषयसूचीकडे परत

संगणक · संगणकाची मूलतत्त्वे · विषय 3 / 16

Input / Output आणि Backup साधने

Input / Output and Backup Devices

असं समजा…

तलाठी कार्यालय आणि शेतकऱ्याच्या सातबाऱ्याच्या झेरॉक्स

गावातलं तलाठी कार्यालय डोळ्यांसमोर आणा — इथे जमिनीच्या नोंदी, म्हणजे सातबारा उतारे ठेवले जातात. शेतकरी भरलेला अर्ज घेऊन येतो आणि कारकून तो संगणकात टाइप करतो: हे input. कार्यालय नवा सातबारा उतारा छापून शेतकऱ्याच्या हातात देतं: हे output. शेतकरी शहाणा आहे — प्रत्येक उताऱ्याची एक झेरॉक्स तो घरी जपून ठेवतो, म्हणजे एका ठिकाणी पूर आला किंवा आग लागली तरी त्याचा पुरावा नष्ट होत नाही — हा backup. गोडाऊनमधली जुनी नोंदवही सुरुवातीपासून पान-पान उलटूनच शोधावी लागते; रजिस्टरमध्ये मात्र आपण थेट हव्या त्या पानावर जाऊ शकतो — हाच फरक sequential access (magnetic tape) आणि direct access (disk) मध्ये आहे. आणि जेव्हा थोडीच पानं बदलतात, तेव्हा तो पूर्ण फाइल पुन्हा झेरॉक्स न करता फक्त नवी पानं झेरॉक्स करतो — हा incremental backup.

रोजच्या जीवनातपरीक्षेच्या विषयात
कारकुनाने टाइप केलेला शेतकऱ्याचा अर्जInput साधन (keyboard, scanner, OMR, MICR)
छापून हातात दिलेला सातबारा उताराOutput साधन (printer, monitor)
घरी जपून ठेवलेली झेरॉक्सदुसऱ्या साधनावर किंवा दुसऱ्या ठिकाणी ठेवलेली backup प्रत
सुरुवातीपासून पान-पान वाचावी लागणारी जुनी नोंदवहीMagnetic tape — sequential access
मागच्या प्रतीनंतर बदललेली पानंच copy करणेIncremental backup

संकल्पना

Input साधने (Input devices) बाहेरच्या जगातला data संगणकाला समजणाऱ्या signals मध्ये बदलतात: keyboard, mouse, scanner, microphone, webcam, joystick, light pen, barcode reader, biometric scanner. तीन खास readers परीक्षेत हमखास विचारले जातात: MICR (Magnetic Ink Character Recognition) बँकेच्या चेकच्या तळाशी magnetic शाईने छापलेले आकडे वाचतो; OMR (Optical Mark Reader) उत्तरपत्रिकेवरची भरलेली वर्तुळे ओळखतो; OCR (Optical Character Recognition) प्रतिमेतील छापील मजकूर edit करता येणाऱ्या मजकुरात बदलतो. Touch screen हे input आणि output दोन्ही प्रकारचे साधन आहे.

Output साधने (Output devices): monitors (CRT, LCD, LED), speakers, projectors, plotters (मोठी engineering drawings) आणि printers. Impact printers ribbon वर ठोका मारतात: dot-matrix (वेग characters per second, cps मध्ये), line printer (lines per minute, lpm), daisy wheel. Non-impact printers कागदावर ठोका मारत नाहीत: inkjet, laser (pages per minute, ppm), thermal (बिल छापणारे printers). छपाईची गुणवत्ता dpi (dots per inch) मध्ये मोजतात.

Backup साधने data ची दुसरी प्रत ठेवतात: magnetic tape (स्वस्त, प्रचंड क्षमता, sequential — archives साठी), external hard disks, optical discs (CD ≈ 700 MB, DVD ≈ 4.7 GB single layer, Blu-ray ≈ 25 GB single layer), flash storage (pen drive, SSD, memory card) आणि cloud/network storage. Backup चे प्रकार: full (सगळं), incremental (कोणत्याही प्रकारच्या मागच्या backup नंतरचे बदल — घ्यायला सर्वांत जलद, restore करायला सर्वांत संथ) आणि differential (मागच्या full backup नंतरचे सगळे बदल — restore साठी फक्त full + सर्वांत नवा differential पुरतो).

महत्त्वाचे मुद्दे व सूत्रे

  • MICR → बँकेचे चेक; OMR → वर्तुळे भरायच्या उत्तरपत्रिका; OCR → छापील मजकूर ते edit करता येणारा मजकूर; barcode reader → दुकानातील billing
  • Impact: dot-matrix (cps), line printer (lpm), daisy wheel; non-impact: inkjet, laser (ppm), thermal
  • Touch screen = input + output; plotter = मोठ्या drawings साठी output
  • Magnetic tape म्हणजे sequential access; hard disk, SSD आणि RAM म्हणजे direct (random) access
  • CD ≈ 700 MB, DVD ≈ 4.7 GB (single layer), Blu-ray ≈ 25 GB (single layer)
  • Incremental backups ने restore: शेवटचा full + त्यानंतरचे प्रत्येक incremental, क्रमाने
  • Differential backups ने restore: शेवटचा full + फक्त सर्वांत नवा differential
  • 3-2-1 नियम: 3 प्रती, 2 प्रकारच्या माध्यमांवर, 1 प्रत दुसऱ्या ठिकाणी (off-site)

सोडवलेले उदाहरण

एक महाविद्यालयाचे कार्यालय दर रविवारी रात्री full backup घेते आणि बाकीच्या प्रत्येक रात्री incremental backup घेते. गुरुवारी सकाळी disk बिघडते. Restore करण्यासाठी कोणते backups लागतील, आणि कोणत्या क्रमाने? रात्रीचे backups differential असते तर काय बदलले असते?

उकल पाहा
  1. शेवटचा full backup रविवारी रात्रीचा आहे.
  2. त्यानंतरचे incrementals: सोमवार, मंगळवार आणि बुधवार रात्रीचे. प्रत्येकात फक्त त्या एका दिवसाचे बदल आहेत, म्हणून तिन्ही लागतील.
  3. Restore चा क्रम: रविवारचा full → सोमवार → मंगळवार → बुधवार.
  4. Differential backups असतील तर बुधवारच्या differential मध्ये रविवारपासूनचे सगळे बदल आधीच आहेत, म्हणून फक्त रविवारचा full + बुधवारचा differential पुरेसे.

उत्तर: Incremental: रविवारचा full + सोम + मंगळ + बुध (4 संच). Differential: रविवारचा full + बुधवार (2 संच).

परीक्षेसाठी झटपट युक्ती

Reader आणि त्याचं काम एका शब्दाने जुळवा: MICR = Magnetic ink → money (चेक); OMR = Marks (वर्तुळे); OCR = Characters (मजकूर).

नेहमीच्या चुका

  • OMR आणि OCR दोन्ही optical आहेत, पण OMR फक्त वर्तुळ भरलेलं आहे की नाही एवढंच ओळखतो; तो अक्षरे वाचू शकत नाही.
  • कार्यालयात मोठ्या प्रमाणात छपाईसाठी वापरला जात असला तरी laser printer non-impact आहे; “impact” म्हणजे pin किंवा हातोडा ribbon वर ठोका मारतो.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. The numbers printed at the bottom of a bank cheque are read by:

बँकेच्या चेकच्या तळाशी छापलेले आकडे कोण वाचतो?

Q2. Which of the following is an impact printer?

खालीलपैकी कोणता impact printer आहे?

Q3. A full backup is taken on Sunday night and a differential backup every other night. The disk fails on Friday morning. Which backups must be restored?

रविवारी रात्री full backup घेतला जातो आणि बाकीच्या प्रत्येक रात्री differential backup. शुक्रवारी सकाळी disk बिघडते. कोणते backups restore करावे लागतील?

Q4. Which storage medium gives only sequential access and is mainly used for long-term archival backup?

कोणते साठवण माध्यम फक्त sequential access देते आणि मुख्यतः दीर्घकालीन archival backup साठी वापरले जाते?

↑ विषयसूचीकडे परत

संगणक · संगणकाची मूलतत्त्वे · विषय 4 / 16

मेमरीची श्रेणीरचना आणि मांडणी

Memory Hierarchy and Organization

असं समजा…

टेबलावर बसून CET चा अभ्यास

कल्पना करा, तुम्ही CET चा अभ्यास करत बसला आहात. हातातलं पेन आणि आत्ता वापरत असलेलं एक सूत्र तुमच्या हातातच आहे — लगेच मिळतं, पण हातात फार थोडं मावतं (registers). टेबलावर उघडून ठेवलेली दोन-चार पुस्तकं हात लांब केला की मिळतात (cache). खोलीतल्या कपाटात या वर्षाची सगळी पुस्तकं आहेत, पण एखादं आणायला उठावं लागतं (मुख्य मेमरी, RAM). महाविद्यालयाच्या ग्रंथालयात हजारो पुस्तकं आहेत, पण तिथे सायकलने जावं लागतं (secondary storage — SSD/hard disk). जितकं जवळ तितकं जलद पण लहान; जितकं लांब तितकं मोठं, संथ आणि स्वस्त. भिंतीवरचा whiteboard रोज रात्री पुसला जातो (volatile RAM), तर छापील पाठ्यपुस्तक वर्षानुवर्षे तसंच राहतं (ROM). आत्ताच वापरलेलं पुस्तक तुम्ही टेबलावरच ठेवता, कारण ते लवकरच पुन्हा लागणार असतं — हीच सवय, म्हणजे locality of reference, cache चालण्यामागचं कारण आहे.

रोजच्या जीवनातपरीक्षेच्या विषयात
हातातलं पेन / सूत्रRegisters (CPU च्या आत, सर्वांत वेगवान, सर्वांत लहान)
टेबलावर उघडी पुस्तकंCache मेमरी (SRAM)
खोलीतलं कपाटमुख्य मेमरी (RAM, DRAM पासून बनलेली)
गावाच्या दुसऱ्या टोकाला असलेलं महाविद्यालयाचं ग्रंथालयSecondary storage (SSD, hard disk)
रोज रात्री पुसला जाणारा whiteboard विरुद्ध छापील पाठ्यपुस्तकVolatile RAM विरुद्ध non-volatile ROM

संकल्पना

मेमरी (स्मृती) एका श्रेणीरचनेत (hierarchy) मांडलेली असते: registers → cache (L1, L2, L3) → मुख्य मेमरी (RAM) → secondary storage (SSD, HDD) → backup storage (tape, optical). खाली जाताना क्षमता वाढते आणि दर bit मागचा खर्च कमी होतो, पण access time वाढतो. CPU थेट फक्त registers, cache आणि मुख्य मेमरी (primary memory) वापरू शकतो; secondary storage पर्यंत I/O मार्फत पोहोचावं लागतं. Cache चालतो कारण locality of reference: temporal (आत्ता वापरलेला word लवकरच पुन्हा वापरला जाईल) आणि spatial (त्याच्या शेजारचे words लवकरच वापरले जातील).

RAM volatile असते (वीज गेली की data जातो). SRAM flip-flops वापरते — वेगवान, refresh ची गरज नाही, महाग — आणि cache साठी वापरली जाते. DRAM प्रत्येक bit capacitor वरच्या charge च्या रूपात ठेवते — दाट आणि स्वस्त, पण तिला सतत refresh करावं लागतं — आणि ती मुख्य मेमरीसाठी वापरतात. ROM non-volatile असते आणि त्यात BIOS/boot program सारखे firmware असते: mask ROM (कारखान्यातच लिहिलेली), PROM (वापरकर्ता एकदाच program करतो), EPROM (ultraviolet प्रकाशाने पुसली जाते), EEPROM (विजेने, byte-byte पुसली जाते) आणि flash (विजेने, blocks मध्ये पुसली जाते — pen drives, SSDs).

Memory chip चे वर्णन words × bits per word असे करतात. ज्या chip ला n address lines आहेत, तिच्यात 2n locations असतात; m data lines असतील तर प्रत्येक location मध्ये m bits राहतात. म्हणून क्षमता = 2n × m bits. CET binary एकके वापरते: 1 KB = 210 bytes, 1 MB = 220, 1 GB = 230, 1 TB = 240; nibble म्हणजे 4 bits आणि byte म्हणजे 8 bits.

महत्त्वाचे मुद्दे व सूत्रे

  • वेग: registers > cache > RAM > SSD > HDD > tape; दर bit मागचा खर्च याच क्रमाने कमी होतो
  • Cache = SRAM (refresh नाही); मुख्य मेमरी = DRAM (refresh लागतो)
  • PROM: एकदाच लिहिता येते; EPROM: UV ने पुसणे; EEPROM: विजेने, byte-wise; Flash: विजेने, block-wise
  • क्षमता = 2address lines × word size; address lines = log₂(locations ची संख्या)
  • लागणाऱ्या chips = (एकूण words ÷ chip चे words) × (एकूण word size ÷ chip चा word size)
  • Hit ratio h = hits ÷ एकूण accesses
  • Miss झाल्यावर आधी cache पाहून मग मेमरी पाहिली तर EAT: h·Tc + (1 − h)(Tc + Tm); दोन्ही एकाच वेळी पाहिल्या तर: h·Tc + (1 − h)·Tm
  • 1 KB = 210 B, 1 MB = 220 B, 1 GB = 230 B, 1 TB = 240 B

सोडवलेले उदाहरण

32K × 8 मेमरी 8K × 8 RAM chips वापरून तयार करायची आहे. किती chips लागतील? संपूर्ण मेमरीला किती address lines लागतील, त्यांपैकी किती प्रत्येक chip ला जातील, आणि chip निवडणाऱ्या decoder ला किती जातील?

उकल पाहा
  1. Chips = (32K ÷ 8K) × (8 ÷ 8) = 4 × 1 = 4 chips.
  2. एकूण words = 32K = 25 × 210 = 215, म्हणून मेमरीला 15 address lines लागतात.
  3. प्रत्येक chip मध्ये 8K = 213 words आहेत, म्हणून खालच्या 13 lines प्रत्येक chip ला समांतर जोडल्या जातात.
  4. उरलेल्या 15 − 13 = 2 वरच्या (high-order) lines एक 2-to-4 decoder चालवतात, जो 4 पैकी एक chip enable करतो.

उत्तर: 4 chips; एकूण 15 address lines — 13 प्रत्येक chip ला, 2 एका 2×4 decoder ला

परीक्षेसाठी झटपट युक्ती

आधी प्रत्येक आकार 2 च्या घातात लिहा: 2 MB = 21 × 220 = 221 bytes → byte-addressable मेमरीसाठी 21 address lines. त्यानंतर सगळं काम म्हणजे फक्त घातांकांची बेरीज-वजाबाकी.

नेहमीच्या चुका

  • Address lines locations मोजतात, bits नाही. 64K × 16 word-addressable मेमरीला 16 address lines लागतात; “× 16” फक्त data lines ची संख्या ठरवतो.
  • Byte-addressable आहे की word-addressable ते तपासा: 32-bit words ची 1 MB मेमरी म्हणजे 218 words (18 lines), पण 220 bytes (20 lines).
  • EAT ची दोन सूत्रे वेगवेगळी उत्तरे देतात; miss झाल्यावरही cache access time खर्च होतो का, ते प्रश्नात नीट वाचा.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. A memory chip has 12 address lines and 8 data lines. Its capacity is:

एका memory chip ला 12 address lines आणि 8 data lines आहेत. तिची क्षमता किती?

Q2. How many address lines are needed to address a 2 MB byte-addressable memory?

2 MB byte-addressable मेमरी address करण्यासाठी किती address lines लागतात?

Q3. How many 1K × 4 RAM chips are needed to build an 8K × 8 memory?

8K × 8 मेमरी तयार करण्यासाठी 1K × 4 च्या किती RAM chips लागतील?

Q4. A cache has access time 10 ns and hit ratio 0.9; main memory access time is 100 ns. Every access looks in the cache first; on a miss, main memory is read only after the cache lookup fails, so a miss costs the cache time plus the memory time. The effective access time is:

एका cache चा access time 10 ns आणि hit ratio 0.9 आहे; मुख्य मेमरीचा access time 100 ns आहे. प्रत्येक access आधी cache मध्ये पाहतो; miss झाला तर cache मध्ये शोध अयशस्वी झाल्यानंतरच मुख्य मेमरी वाचली जाते, म्हणून एका miss ला cache time + memory time लागतो. Effective access time किती?

↑ विषयसूचीकडे परत

संगणक · डेटाचे निरूपण · विषय 5 / 16

संख्या पद्धती आणि रूपांतरे

Number Systems and Conversions

असं समजा…

2 च्या प्रत्येक घाताचं एकच नाणं वापरून पैसे देणे

टोल नाक्यावरची एक कॅशियर डोळ्यांसमोर आणा. तिच्याकडे फक्त ₹1, ₹2, ₹4, ₹8, ₹16, ₹32, ₹64 आणि ₹128 ची नाणी आहेत — आणि प्रत्येक किमतीचं जास्तीत जास्त एकच नाणं ती देऊ शकते. ₹13 द्यायचे असतील तर ती बसणारं सर्वांत मोठं नाणं घेते (₹8, उरले 5), मग ₹4 (उरला 1), ₹2 सोडून देते, आणि मग ₹1 घेते. सर्वांत मोठ्या नाण्यापासून “घेतलं = 1, सोडलं = 0” असं लिहीत गेलं तर 1101 मिळतं — आणि हाच 13 चा binary रूप आहे. आपली नेहमीची दशमान पद्धतही अशीच चालते, फक्त तिथे ₹1, ₹10, ₹100, ₹1000 च्या नोटा असतात आणि प्रत्येकी नऊपर्यंत नोटा वापरता येतात. कोणतीही संख्या पद्धती म्हणजे फक्त एवढंच: “कोणत्या किमतीच्या नोटा आहेत, आणि प्रत्येकी किती वापरता येतात”.

रोजच्या जीवनातपरीक्षेच्या विषयात
₹1, ₹2, ₹4, ₹8 … ची नाणीस्थानिक किमती 2⁰, 2¹, 2², 2³ … (आधारांक 2)
प्रत्येक किमतीचं जास्तीत जास्त एकच नाणंप्रत्येक binary अंक फक्त 0 किंवा 1
घेतलं = 1, सोडलं = 0, सर्वांत मोठ्या नाण्यापासूनBit pattern, उदा. 13 = 11012
₹1, ₹10, ₹100 च्या नोटा, प्रत्येकी नऊपर्यंतदशमान: आधारांक 10, अंक 0–9
नेहमी बसणारं सर्वांत मोठं नाणं घ्यायचं2 चे घात वजा करत केलेले रूपांतर

संकल्पना

स्थानमूल्य संख्या पद्धतीत (positional number system) आधारांक (base / radix) r असेल तर प्रत्येक अंकाला त्याच्या स्थानानुसार r च्या एका घाताने गुणले जाते. द्विमान पद्धती (binary, आधारांक 2) 0–1 वापरते, अष्टमान (octal, आधारांक 8) 0–7, दशमान (decimal, आधारांक 10) 0–9, आणि षोडशमान (hexadecimal, आधारांक 16) 0–9 आणि A–F (A = 10 … F = 15). कोणत्याही आधारांकातून दशमानात नेण्यासाठी प्रत्येक अंकाला त्याच्या स्थानिक किमतीने गुणून सर्वांची बेरीज करा: 1011.12 = 8 + 0 + 2 + 1 + 0.5 = 11.5.

दशमान पूर्णांक आधारांक r मध्ये नेण्यासाठी r ने पुन्हा पुन्हा भागा आणि बाकी खालून वर वाचा. दशमान अपूर्णांकासाठी r ने पुन्हा पुन्हा गुणा आणि पूर्णांक भाग वरून खाली वाचा. काही अपूर्णांक कधीच संपत नाहीत: 0.110 = 0.000110011…2, म्हणूनच संगणक 0.1 अचूक साठवू शकत नाही.

Binary ↔ octal आणि binary ↔ hex साठी भागाकाराची गरजच नाही, कारण 8 = 2³ आणि 16 = 2⁴. Bits चे तीन-तीनचे (octal) किंवा चार-चारचे (hex) गट करा, सुरुवात binary point पासून — पूर्णांक भागासाठी डावीकडे आणि अपूर्णांक भागासाठी उजवीकडे — आणि कमी पडल्यास शून्ये जोडा. Octal ↔ hex साठी binary मार्गे जा.

महत्त्वाचे मुद्दे व सूत्रे

  • किंमत = Σ अंक × rस्थान (स्थाने …, 2, 1, 0, −1, −2 …)
  • पूर्णांक → आधारांक r: r ने भागा, बाकी खालून वर वाचा
  • अपूर्णांक → आधारांक r: r ने गुणा, पूर्णांक भाग वरून खाली वाचा
  • Binary → octal: 3 चे गट; binary → hex: 4 चे गट, point पासून बाहेरच्या दिशेने
  • Hex अंक: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15
  • उपयोगी घात: 2¹⁰ = 1024, 8² = 64, 8³ = 512, 16² = 256, 16³ = 4096
  • आधारांक r मधील सर्वांत मोठी n-अंकी संख्या = rn − 1 (8 bits → 255 = FF16)

सोडवलेले उदाहरण

156.62510 चे binary, octal आणि hexadecimal मध्ये रूपांतर करा.

उकल पाहा
  1. पूर्णांक भाग: 156 ला 2 ने पुन्हा पुन्हा भागल्यावर बाकी 0, 0, 1, 1, 1, 0, 0, 1 मिळतात. खालून वर वाचा: 10011100. पडताळा: 128 + 16 + 8 + 4 = 156.
  2. अपूर्णांक: 0.625 × 2 = 1.25 → 1; 0.25 × 2 = 0.5 → 0; 0.5 × 2 = 1.0 → 1. वरून खाली वाचा: .101.
  3. Binary: 10011100.1012.
  4. Octal: 010 011 100 . 101 → 234.58.
  5. Hex: 1001 1100 . 1010 (अपूर्णांकात एक 0 जोडून) → 9C.A16.

उत्तर: 10011100.1012 = 234.58 = 9C.A16

परीक्षेसाठी झटपट युक्ती

लहान संख्यांचे दशमान → binary करताना भागाकार टाळा: 128 64 32 16 8 4 2 1 असं लिहा आणि ज्यांची बेरीज ती संख्या होते त्यांच्यावर खूण करा (नाण्यांची पद्धत). “आधारांक शोधा” अशा प्रश्नांत संख्या b मधील बहुपदी म्हणून लिहा आणि पर्याय ताडून पाहा.

नेहमीच्या चुका

  • Octal/hex साठी गट binary point पासून सुरू होतात, डाव्या टोकापासून नाही: 1011.12 = 001 011 . 100 = 13.48, 13.18 नाही.
  • अपूर्णांकांसाठी पूर्णांक भाग वरून खाली वाचा; ते खालून वर (पूर्णांकाच्या बाकीसारखे) वाचले तर उत्तर चुकते.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. (2AF)16 in decimal is:

(2AF)16 दशमानात किती?

Q2. (0.375)10 in binary is:

(0.375)10 binary मध्ये किती?

Q3. (725)8 in hexadecimal is:

(725)8 hexadecimal मध्ये किती?

Q4. If (121)b = (49)10, the base b is:

जर (121)b = (49)10, तर आधारांक b किती?

↑ विषयसूचीकडे परत

संगणक · डेटाचे निरूपण · विषय 6 / 16

अक्षरे आणि data चे निरूपण (ASCII, Unicode, BCD, Parity)

Character and Data Representation (ASCII, Unicode, BCD, Parity)

असं समजा…

भारतीय रेल्वेचे गाडी क्रमांक

भारतातल्या प्रत्येक गाडीला एक ठरलेला क्रमांक असतो. नागपूरचे स्टेशन मास्तर, पुण्याचा बुकिंग क्लार्क आणि तुमच्या मोबाइलवरचं app — सगळ्यांचं एकमत आहे की 12123 म्हणजे डेक्कन क्वीन. म्हणूनच एका शहरात काढलेलं तिकीट सगळीकडे समजतं. संगणक अक्षरांच्या बाबतीत हेच करतात: प्रत्येक अक्षरासाठी एक क्रमांक ठरवलेला असतो — “A” म्हणजे सगळीकडे 65 — म्हणून एका संगणकावर टाइप केलेली फाइल दुसऱ्यावर बरोबर वाचली जाते. रेल्वेची जुनी पद्धत चार अंकी होती; गाड्या वाढल्या तसे क्रमांक कमी पडू लागले. 2010 मध्ये रेल्वे पाच अंकी क्रमांकांकडे वळली आणि जुने क्रमांक नव्यांच्या आतच ठेवले (2123 चा 12123 झाला). अक्षरांच्या code ची कहाणीही अगदी अशीच: 7-bit ASCII मध्ये फक्त 128 codes — इंग्रजीला पुरेसे, पण मराठीला जागाच नाही. Unicode प्रत्येक लिपीतल्या प्रत्येक अक्षराला एक क्रमांक देतो आणि ASCII चे 128 codes आपले पहिले 128 म्हणून तसेच ठेवतो, त्यामुळे जुना इंग्रजी मजकूर आजही चालतो.

रोजच्या जीवनातपरीक्षेच्या विषयात
गाडीचं नाव (डेक्कन क्वीन)एक अक्षर (A हे अक्षर)
तिचा ठरलेला गाडी क्रमांक (12123)त्याचा character code (65)
भारतातल्या प्रत्येक स्टेशनवर तोच क्रमांकप्रत्येक संगणकावर तीच code table, म्हणून मजकुराची देवाणघेवाण शक्य
जुने 4-अंकी क्रमांक कमी पडले7-bit ASCII: फक्त 2⁷ = 128 codes, देवनागरीला जागा नाही
5-अंकी पद्धतीत जुने क्रमांक आतच सामावलेUnicode: पहिले 128 code points हुबेहूब ASCII

संकल्पना

संगणक फक्त bits साठवतो, म्हणून प्रत्येक अक्षराला एक मान्य क्रमांक (त्याचा code) दिला जातो. ASCII हा 128 अक्षरांचा 7-bit code आहे: 0–31 control characters, 32 म्हणजे space, 48–57 म्हणजे ‘0’–‘9’ हे अंक, 65–90 म्हणजे A–Z आणि 97–122 म्हणजे a–z. Extended ASCII 8 bits (256 अक्षरे) वापरतो. IBM mainframes EBCDIC हा 8-bit code वापरत. Unicode सर्व लिप्यांना सामावून घेतो आणि तो UTF-8 (दर अक्षरामागे 1 ते 4 bytes: ASCII अक्षरांना 1 byte, देवनागरी अक्षरांना 3), UTF-16 (2 किंवा 4 bytes) किंवा UTF-32 (नेहमी 4 bytes) या रूपात साठवला जातो.

संख्या अंक-अंक करूनही साठवता येतात. BCD (Binary Coded Decimal, 8421 code) प्रत्येक दशमान अंक 4 bits मध्ये लिहितो: 395 = 0011 1001 0101. BCD मध्ये 1010 ते 1111 हे नमुने अवैध आहेत. Excess-3 मध्ये code करण्याआधी प्रत्येक अंकात 3 मिळवतात (5 → 1000). Gray code मध्ये लागोपाठच्या दोन संख्यांमध्ये फक्त एकच bit बदलतो.

Parity bit हा एक जास्तीचा bit असतो, जो असा निवडला जातो की एकूण 1 ची संख्या सम (even parity) किंवा विषम (odd parity) होईल. घेणारा (receiver) 1 मोजतो; संख्या चुकली तर error आहे. Parity उलटलेल्या bits ची कोणतीही विषम संख्या (उदा. एक) पकडतो, पण दोन bits उलटले तर चुकतो, आणि कोणता bit चुकला हे सांगू शकत नाही, म्हणून तो error दुरुस्त करू शकत नाही (Hamming code करू शकतो).

महत्त्वाचे मुद्दे व सूत्रे

  • ASCII: 7 bits, 128 अक्षरे; extended ASCII: 8 bits, 256 अक्षरे
  • ‘0’ = 48, ‘A’ = 65, ‘a’ = 97, space = 32; lowercase = uppercase + 32 (फक्त bit 5 वेगळा)
  • Unicode: प्रत्येक लिपीतल्या प्रत्येक अक्षरासाठी एक code point; पहिले 128 म्हणजे ASCII
  • UTF-8: ASCII साठी 1 byte, देवनागरीसाठी 3 bytes (उदा. अ = U+0905)
  • BCD: दर दशमान अंकामागे 4 bits; 1010–1111 अवैध
  • Excess-3 = (अंक + 3) चा BCD; Gray code: शेजारच्या संख्यांत एकच bit बदलतो
  • Parity विषम संख्येतील bit errors (उदा. 1) पकडतो, 2 चुकवतो, आणि दुरुस्त करू शकत नाही
  • n bits ने 2n वेगवेगळी अक्षरे दाखवता येतात

सोडवलेले उदाहरण

‘g’ चा ASCII code 103 आहे. त्याचे 7-bit binary रूप लिहा आणि फक्त एक bit बदलून ते uppercase ‘G’ मध्ये बदला.

उकल पाहा
  1. 103 = 64 + 32 + 4 + 2 + 1 → 11001112.
  2. Uppercase अक्षरे lowercase पेक्षा बरोबर 32 ने कमी असतात, आणि 32 = 01000002 म्हणजे bit 5 (उजवीकडच्या bit 0 पासून मोजल्यास).
  3. Bit 5 शून्य करा: 1100111 → 10001112 = 64 + 4 + 2 + 1 = 71.
  4. 71 हा ‘G’ चा ASCII code आहे.

उत्तर: ‘g’ = 11001112; bit 5 शून्य केल्यावर 10001112 = 71 = ‘G’

परीक्षेसाठी झटपट युक्ती

तीन खुंट्या लक्षात ठेवा: 48, 65, 97 (‘0’, ‘A’, ‘a’). बाकी प्रत्येक code = खुंटी + स्थान: ‘d’ = 97 + 3 = 100, ‘7’ = 48 + 7 = 55, ‘Z’ = 65 + 25 = 90.

नेहमीच्या चुका

  • ‘7’ हे अक्षर म्हणजे 7 ही संख्या नव्हे: त्याचा ASCII code 55 आहे. C मध्ये '7' - '0' केल्यावर 7 मिळतो.
  • BCD म्हणजे binary नव्हे: 25 चा BCD 0010 0101 आहे, पण binary मध्ये तो 11001 आहे.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. If the ASCII code of ‘A’ is 65, what is the ASCII code of ‘d’?

‘A’ चा ASCII code 65 असेल, तर ‘d’ चा ASCII code किती?

Q2. The BCD (8421) representation of 395 is:

395 चे BCD (8421) रूप कोणते?

Q3. A receiver uses even parity on 8-bit words (7 data bits + 1 parity bit). Which received word shows an error?

एक receiver 8-bit words (7 data bits + 1 parity bit) वर even parity वापरतो. मिळालेल्या कोणत्या word मध्ये error दिसतो?

Q4. In UTF-8, how many bytes are needed to store the two-character string “Aअ” (Latin A followed by Devanagari अ)?

UTF-8 मध्ये “Aअ” ही दोन अक्षरांची string (Latin A नंतर देवनागरी अ) साठवण्यासाठी किती bytes लागतात?

↑ विषयसूचीकडे परत

संगणक · डेटाचे निरूपण · विषय 7 / 16

Binary अंकगणित, चिन्हांकित संख्या आणि Two’s Complement

Binary Arithmetic, Signed Numbers and Two’s Complement

असं समजा…

0000 च्या खाली उलटा फिरणारा स्कूटरचा odometer

जुन्या स्कूटरचा चार अंकी यांत्रिक odometer आठवा. 0000 वरून तो एकने मागे फिरवला तर तो “−1” दाखवत नाही; तो उलटा फिरून 9999 वर जातो. हे माहीत असलेला मेकॅनिक 9999 ला सरळ “शून्याच्या एक खाली”, 9998 ला “शून्याच्या दोन खाली” असं वाचतो. आता कल्पना करा एका binary odometer ची, ज्याची 4 चाकं फक्त 0 किंवा 1 दाखवतात. 0000 वरून एक मागे गेलं की 1111 येतं, म्हणजे 1111 = −1, 1110 = −2, आणि 1000 (बरोबर अर्धा फेरा) सर्वांत लहान ऋण संख्या, −8. हा उलटा फिरलेला आकडा म्हणजेच two’s complement code. मीटर फक्त एका वर्तुळावर मोजत राहतो, म्हणून ऋण संख्या मिळवणं म्हणजे पुढे फिरवण्यासारखंच — म्हणूनच संगणकाला फक्त adder लागतो, वजाबाकीसाठी वेगळं यंत्र कधीच लागत नाही. चुकून अर्ध्या फेऱ्याची रेषा ओलांडली (7 + 1 जाऊन 1000 = −8 वर पडलं) तर तो overflow.

रोजच्या जीवनातपरीक्षेच्या विषयात
Odometer ची ठरलेली चाकंठरलेले bits (n-bit register)
0000 च्या खाली उलटा फिरून 1111−1 सगळ्या 1 च्या रूपात साठवला जातो
10000 या फेरा-पूर्तीच्या बिंदूपर्यंत उरलेलं अंतरx चा two’s complement = 2n − x
Carry दाखवायला पाचवं चाकच नाहीशेवटचा carry out टाकून दिला जातो
7 + 1 अर्धा फेरा ओलांडून 1000 वरOverflow: निकाल मावत नाही, चिन्ह चुकीचं येतं

संकल्पना

Binary बेरीज: 0 + 0 = 0, 0 + 1 = 1, 1 + 1 = 10 (0 लिहा, 1 हातचा) आणि 1 + 1 + 1 = 11. चिन्हांकित संख्या (signed numbers) n bits मध्ये तीन प्रकारे साठवता येतात. Sign-magnitude: MSB म्हणजे चिन्ह आणि उरलेले bits म्हणजे आकार. One’s complement: ऋण संख्या म्हणजे धन संख्येचा प्रत्येक bit उलटवलेला. Two’s complement: प्रत्येक bit उलटवा आणि 1 मिळवा (म्हणजेच 2n − x). Sign-magnitude आणि one’s complement दोन्हींमध्ये दोन शून्ये (+0 आणि −0) असतात; two’s complement मध्ये एकच शून्य असतं, म्हणूनच आजचा प्रत्येक CPU तो वापरतो.

Two’s complement मध्ये A − B काढण्यासाठी A मध्ये B चा two’s complement मिळवा आणि MSB मधून बाहेर पडणाऱ्या carry कडे दुर्लक्ष करा. उत्तराचा MSB 1 असेल तर उत्तर ऋण आहे; त्याचा आकार वाचण्यासाठी त्याचा two’s complement घ्या. Overflow फक्त तेव्हाच होतो जेव्हा एकाच चिन्हाच्या दोन संख्या मिळवल्या जातात आणि निकालाचं चिन्ह उलट येतं — म्हणजेच MSB मध्ये येणारा carry आणि MSB मधून जाणारा carry वेगवेगळे असतात. एक धन आणि एक ऋण संख्या मिळवताना overflow कधीच होत नाही.

Two’s-complement संख्या जास्त bits मध्ये रुंद करायची असेल तर नव्या जागांमध्ये sign bit ची copy करा (sign extension): −3 हे 4 bits मध्ये 1101 आणि 8 bits मध्ये 11111101 आहे.

महत्त्वाचे मुद्दे व सूत्रे

  • n-bit two’s complement ची व्याप्ती: −2n−1 ते +2n−1 − 1 (8 bits: −128 ते +127)
  • n-bit sign-magnitude आणि one’s complement ची व्याप्ती: −(2n−1 − 1) ते +(2n−1 − 1), दोन शून्यांसह
  • Two’s complement = one’s complement + 1 = 2n − x
  • झटपट पद्धत: उजवीकडून पहिल्या 1 पर्यंत (तोही धरून) bits जसेच्या तसे लिहा, मग उरलेले उलटवा
  • A − B = A + (B चा two’s complement); शेवटचा carry टाकून द्या
  • Overflow: (+) + (+) = (−), किंवा (−) + (−) = (+); MSB मध्ये येणारा carry ≠ MSB मधून जाणारा carry
  • Sign extension: रुंद करताना MSB पुन्हा पुन्हा लिहा

सोडवलेले उदाहरण

8-bit two’s complement अंकगणित वापरून 25 − 37 काढा.

उकल पाहा
  1. 25 = 00011001 आणि 37 = 00100101.
  2. 37 चा two’s complement: उलटवा → 11011010, 1 मिळवा → 11011011.
  3. बेरीज: 00011001 + 11011011 = 11110100 (carry out नाही).
  4. MSB 1 आहे, म्हणून उत्तर ऋण आहे. 11110100 चा two’s complement = 00001100 = 12.
  5. म्हणून निकाल −12. पडताळा: 25 − 37 = −12. ✓

उत्तर: 111101002 = −12

परीक्षेसाठी झटपट युक्ती

ऋण two’s-complement संख्या पटकन वाचायची असेल तर MSB ला ऋण किंमत द्या: 11110100 = −128 + 64 + 32 + 16 + 4 = −12. काहीही उलटवायची गरज नाही.

नेहमीच्या चुका

  • “उलटवा आणि 1 मिळवा” म्हणजे two’s complement; फक्त उलटवणे म्हणजे one’s complement. प्रश्न कोणता विचारतो ते नीट वाचा.
  • Two’s complement मध्ये MSB मधून बाहेर पडणारा carry म्हणजे overflow नव्हे. Overflow चिन्हांवरून ठरवा, carry वरून नाही.
  • व्याप्ती सममित नाही: −128 हे 8 bits मध्ये मावते, +128 मावत नाही.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. The 8-bit two’s complement representation of −45 is:

−45 चे 8-bit two’s complement रूप कोणते?

Q2. The range of integers that can be represented in 8-bit two’s complement is:

8-bit two’s complement मध्ये दाखवता येणाऱ्या पूर्णांकांची व्याप्ती कोणती?

Q3. In 4-bit two’s complement arithmetic, 0110 + 0101 = 1011. Which statement is correct?

4-bit two’s complement अंकगणितात 0110 + 0101 = 1011. कोणते विधान बरोबर आहे?

Q4. The 8-bit pattern 10000001 represents which values in sign-magnitude, one’s complement and two’s complement respectively?

10000001 हा 8-bit नमुना sign-magnitude, one’s complement आणि two’s complement मध्ये अनुक्रमे कोणत्या किमती दाखवतो?

↑ विषयसूचीकडे परत

संगणक · डेटाचे निरूपण · विषय 8 / 16

Floating Point आणि Normalization (IEEE 754)

Floating Point and Normalization (IEEE 754)

असं समजा…

लाख-कोटीत लिहिलेले फ्लॅटचे भाव

पुण्यातल्या एका बिल्डरच्या भावफलकावर फक्त तीन अंक आणि एक एकक-शब्द लिहिण्याइतकीच जागा आहे: “₹ 2.53 कोटी”, “₹ 8.40 लाख”. कोणीही ₹25300000 असं लिहीत नाही — ते फार लांब होतं — आणि “₹ 0.253 दहा-कोटी” असंही कोणी लिहीत नाही, कारण त्यात सुरुवातीच्या शून्यावर एक अंक वाया जातो. “दशांश चिन्हाआधी एक शून्येतर अंक, मग एकक-शब्द” हा नियम म्हणजेच normalization. ते तीन अंक म्हणजे mantissa (significand): ते अचूकता देतात. एकक-शब्द म्हणजे exponent: तो व्याप्ती देतो. ₹2,53,46,781 च्या फ्लॅटचा भाव 2.53 कोटी असा दाखवला जातो, म्हणजे शेवटचे अंक गळतात — हीच rounding error. संगणक हेच 2 च्या आधारांकात करतो, आणि normalized binary संख्या नेहमी 1 ने सुरू होत असल्याने तो 1 साठवतच नाही (hidden bit).

रोजच्या जीवनातपरीक्षेच्या विषयात
दाखवलेले तीन अंक, उदा. 2.53Mantissa / significand (अचूकता)
एकक-शब्द: लाख, कोटीExponent (व्याप्ती — आधारांकाचा घात)
“दशांश चिन्हाआधी एक शून्येतर अंक” हा नियमNormalization: 1.xxx × 2e
₹2,53,46,781 चे शेवटचे अंक गळलेमर्यादित mantissa bits मुळे rounding error
तोट्यासाठी उणे चिन्हSign bit

संकल्पना

Floating point मध्ये वास्तव संख्या ± M × BE अशी साठवली जाते: एक चिन्ह, एक mantissa M आणि एक exponent E (संगणकात आधारांक B = 2). Mantissa मध्ये सुरुवातीला शून्ये नसतील, म्हणजे एकही bit वाया जात नसेल, तेव्हा ती संख्या normalized असते. पुस्तकांत दोन पद्धती दिसतात: जुनी पाठ्यपुस्तके 0.1xxx × 2E (point नंतरचा पहिला bit 1) वापरतात; IEEE 754 1.xxx × 2E वापरते. कोणती अपेक्षित आहे ते प्रश्न वाचून ठरवा.

IEEE 754 single precision (32 bits, C चा float) मध्ये 1 sign bit, 8 exponent bits आणि 23 fraction bits असतात. Exponent 127 च्या bias सह साठवला जातो (साठवलेला E = खरा exponent + 127), आणि सुरुवातीचा 1 साठवला जात नाही (hidden bit), म्हणून किंमत = (−1)S × 1.F × 2E − 127. Double precision (64 bits) मध्ये 1 + 11 + 52 bits आणि bias 1023.

विशेष नमुने: E = 0 आणि F = 0 म्हणजे ±0; E = 255 आणि F = 0 म्हणजे ±∞; E = 255 आणि F ≠ 0 म्हणजे NaN (not a number, उदा. 0/0); E = 0 आणि F ≠ 0 म्हणजे denormal (अतिशय लहान) संख्या. म्हणून सामान्य exponents −126 ते +127 पर्यंत असतात. 0.1 सारखी संख्या binary मध्ये आवर्ती अपूर्णांक असते आणि ती फक्त अंदाजे साठवली जाते; अर्धे, पाव आणि आठवे भाग यांपासून बनलेल्या संख्या (0.5, 0.75, 0.625) अचूक साठवल्या जातात.

महत्त्वाचे मुद्दे व सूत्रे

  • Single: 1 sign + 8 exponent + 23 fraction = 32 bits, bias 127
  • Double: 1 sign + 11 exponent + 52 fraction = 64 bits, bias 1023
  • किंमत = (−1)S × 1.F × 2E − 127 (hidden 1 साठवला जात नाही)
  • साठवलेला exponent = खरा exponent + 127 (म्हणून 1.0 साठी E = 127 = 01111111)
  • E सगळे 0 आणि F = 0 → शून्य; E सगळे 1 आणि F = 0 → अनंत; E सगळे 1 आणि F ≠ 0 → NaN
  • Normalizing: point च्या डावीकडे एकच 1 उरेपर्यंत point सरकवा; point डावीकडे सरकवला की exponent वाढतो
  • ज्यांचा छेद 2 चा घात आहे असेच अपूर्णांक अचूक (0.5, 0.25, 0.625 हो; 0.1, 0.2 नाही)

सोडवलेले उदाहरण

−12.375 हे IEEE 754 single precision मध्ये लिहा (binary आणि hex).

उकल पाहा
  1. चिन्ह: ऋण → S = 1.
  2. 12 = 1100 आणि 0.375 = .011, म्हणून 12.375 = 1100.0112.
  3. Normalize: 1100.011 = 1.100011 × 2³ (point 3 स्थाने डावीकडे सरकवला).
  4. साठवलेला exponent = 3 + 127 = 130 = 10000010.
  5. Fraction (hidden 1 नंतरचा भाग): 100011 आणि त्यानंतर 17 शून्ये.
  6. Bits: 1 | 10000010 | 10001100000000000000000. चार-चारच्या गटांत: 1100 0001 0100 0110 0000 … → C146000016.

उत्तर: 1 10000010 10001100000000000000000 = C146000016

परीक्षेसाठी झटपट युक्ती

C0A00000 सारखा hex नमुना उलगडायचा असेल तर फक्त पहिले 3 hex अंक binary मध्ये लिहा (C0A → 1100 0000 1010): पहिला bit = चिन्ह, पुढचे 8 bits = exponent, उरलेले = fraction ची सुरुवात. 12 पेक्षा जास्त bits क्वचितच लागतात.

नेहमीच्या चुका

  • Bias विसरू नका: साठवलेला exponent = खरा + 127, खरा exponent नव्हे.
  • Hidden 1 साठवला जात नाही; 23 fraction bits म्हणजे फक्त point नंतर येणारा भाग.
  • प्रश्नात 0.1xxx normalization वापरले असेल तर 1100.011 चा 0.1100011 × 2⁴ होतो — exponent वेगळा.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. The IEEE 754 single-precision pattern C0A0000016 represents:

IEEE 754 single-precision नमुना C0A0000016 कोणती संख्या दाखवतो?

Q2. In IEEE 754 single precision, the stored (biased) exponent field for the number 1.0 is:

IEEE 754 single precision मध्ये 1.0 या संख्येसाठी साठवलेले (biased) exponent field कोणते?

Q3. The IEEE-style normalized form (1.F × 2e) of 0.00010112 is:

0.00010112 चे IEEE पद्धतीचे normalized रूप (1.F × 2e) कोणते?

Q4. Which of these decimal numbers can be stored exactly in IEEE 754 single precision?

यांपैकी कोणती दशमान संख्या IEEE 754 single precision मध्ये अचूक साठवता येते?

↑ विषयसूचीकडे परत

संगणक · डेटाचे निरूपण · विषय 9 / 16

बूलियन बीजगणित, तार्किक द्वारे, सत्यता सारणी आणि K-maps

Boolean Algebra, Logic Gates, Truth Tables and K-maps

असं समजा…

आपल्या घरातली बटणं आणि दिवे

आपल्या घरातली wiring बघा. एखादा दिवा दोन बटणांमधून एकामागून एक (series मध्ये) जोडला असेल, तर बटण A आणि बटण B दोन्ही चालू असतील तेव्हाच तो पेटतो — हा AND. दोन बटणं शेजारी-शेजारी (parallel मध्ये) जोडली असतील, तर कोणतंही एक दिवा पेटवू शकतं — हा OR. दाबल्यावर circuit तोडणारं push-button म्हणजे NOT. आणि जिन्यावरचा दिवा — जो खाली चालू करून वरून बंद करता येतो — कोणतंही एकच बटण फिरवलं की आपली स्थिती बदलतो; ती two-way बटणं XOR सारखी वागतात. बूलियन बीजगणित म्हणजे अशा चालू/बंद बटणांचं गणित एवढंच: 1 = चालू/जोडलेलं/सत्य, 0 = बंद/तुटलेलं/असत्य.

रोजच्या जीवनातपरीक्षेच्या विषयात
Series मधली दोन बटणंAND: A·B
Parallel मधली दोन बटणंOR: A + B
दाबल्यावर circuit तोडणारं push-buttonNOT: A′
जिन्यावरची two-way बटणं — कोणतंही एक फिरवलं की दिवा उलटतोXOR: A ⊕ B = A′B + AB′
दिवा चालू / बंदOutput 1 / 0

संकल्पना

बूलियन बीजगणित (Boolean algebra) 0 आणि 1 या किमतींवर तीन मूलभूत क्रियांनी चालते: AND (·), OR (+) आणि NOT (′ किंवा वरची रेघ). इतर तार्किक द्वारे (logic gates) यांच्याच जोडण्या आहेत: NAND = AND चा NOT, NOR = OR चा NOT, XOR (inputs वेगवेगळे असतील तेव्हा 1), XNOR (inputs सारखे असतील तेव्हा 1). NAND आणि NOR ही सार्वत्रिक द्वारे (universal gates) आहेत: फक्त त्यांपैकी एकच वापरून कोणतंही circuit बनवता येतं. n inputs साठीच्या सत्यता सारणीत (truth table) 2n ओळी असतात, आणि n चलांची 22n वेगवेगळी Boolean functions असतात.

महत्त्वाचे नियम: A + 0 = A, A·1 = A, A + 1 = 1, A·0 = 0, A + A = A, A + A′ = 1, A·A′ = 0, (A′)′ = A; वितरण नियम (distributive) A + BC = (A + B)(A + C); शोषण नियम (absorption) A + AB = A, A(A + B) = A, आणि A + A′B = A + B. De Morgan चे नियम: (A + B)′ = A′·B′ आणि (A·B)′ = A′ + B′ — “रेघ तोडा, चिन्ह बदला”.

Venn आकृतीत AND म्हणजे सामाईक भाग (छेद, intersection), OR म्हणजे संयोग (union), NOT म्हणजे वर्तुळाबाहेरचं सगळं, आणि XOR म्हणजे सामाईक भाग सोडून दोन्ही बाजूंचे भाग. Karnaugh map मध्ये minterms Gray-code क्रमाने (00, 01, 11, 10) मांडलेले असतात, म्हणून शेजारच्या cells मध्ये फक्त एकच चल बदलतो. शेजारचे 1 हे 1, 2, 4 किंवा 8 च्या गटांत घ्या (गट कडांवरून गुंडाळून पलीकडे जाऊ शकतात); प्रत्येक गटात जे चल बदलत नाहीत त्यांचे एक product term बनते.

महत्त्वाचे मुद्दे व सूत्रे

  • AND: सगळे inputs 1 असतील तेव्हाच 1; OR: सगळे inputs 0 असतील तेव्हाच 0
  • NAND: सगळे inputs 1 असतील तेव्हाच 0; NOR: सगळे inputs 0 असतील तेव्हाच 1 — दोन्ही universal
  • XOR = A′B + AB′ (inputs वेगवेगळे असतील तेव्हा 1); XNOR = AB + A′B′
  • De Morgan: (A + B)′ = A′B′; (AB)′ = A′ + B′
  • शोषण नियम: A + AB = A; A(A + B) = A; A + A′B = A + B
  • n चल: सत्यता सारणीत 2n ओळी आणि 22n शक्य functions
  • K-map क्रम 00, 01, 11, 10; 2k cells चा गट k चल काढून टाकतो
  • Venn: AND = छेद, OR = संयोग, XOR = symmetric difference

सोडवलेले उदाहरण

K-map वापरून F(A, B, C) = Σm(0, 1, 2, 4, 5) सोपे करा.

उकल पाहा
  1. Minterms ABC रूपात: 0 = 000, 1 = 001, 2 = 010, 4 = 100, 5 = 101.
  2. K-map च्या ओळी A = 0, 1; स्तंभ BC = 00, 01, 11, 10. A = 0 या ओळीत 00, 01, 10 खाली 1 आहेत; A = 1 या ओळीत 00, 01 खाली 1 आहेत.
  3. चारचा गट: cells 0, 1, 4, 5 (दोन्ही ओळींतले 00 आणि 01 स्तंभ). सगळीकडे B = 0, तर A आणि C बदलतात → term B′.
  4. Cell 2 (010) अजून झाकला गेलेला नाही. ओळीच्या कडेवरून गुंडाळून त्याची cell 0 (000) सोबत जोडी करा: A = 0 आणि C = 0 स्थिर राहतात → term A′C′.
  5. F = B′ + A′C′. पडताळा m2 = 010: B = 1, म्हणून फक्त A′C′ तो झाकतो. ✓

उत्तर: F = B′ + A′C′

परीक्षेसाठी झटपट युक्ती

“Simplify” प्रकारच्या MCQ मध्ये मूळ expression आणि चारही पर्याय काही input ओळींवर तपासा, उदा. (A, B) = (0, 0), (0, 1), (1, 0), (1, 1). बहुतेक वेळा एक-दोन ओळींतच तीन पर्याय बाद होतात.

नेहमीच्या चुका

  • De Morgan क्रियाही बदलतो: (A + B)′ म्हणजे A′B′, A′ + B′ नाही.
  • K-map चे स्तंभ 00, 01, 11, 10 असे जातात — 00, 01, 10, 11 असे नाही. Binary क्रम वापरला तर शेजारीपणा तुटतो.
  • A + BC = (A + B)(A + C) हे सामान्य बीजगणितात चुकीचं वाटलं तरी बूलियन बीजगणितात खरं आहे.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. A + A′B simplifies to:

A + A′B चे सोपे रूप कोणते?

Q2. By De Morgan’s law, (A + B + C)′ equals:

De Morgan च्या नियमानुसार (A + B + C)′ कशाच्या बरोबर आहे?

Q3. In a Venn diagram of sets A and B, the shaded region is everything in A or in B but not in both. Which Boolean expression does it represent?

A आणि B संचांच्या Venn आकृतीत, A मध्ये किंवा B मध्ये असलेला पण दोन्हींत नसलेला सगळा भाग छायांकित केला आहे. तो कोणते Boolean expression दाखवतो?

Q4. The minimal expression for F(A, B, C, D) = Σm(0, 2, 8, 10) is:

F(A, B, C, D) = Σm(0, 2, 8, 10) चे सर्वांत लहान expression कोणते?

↑ विषयसूचीकडे परत

संगणक · संगणक संरचना · विषय 10 / 16

Buses, Processor–I/O संवाद आणि Interrupts

Buses, Processor–I/O Communication and Interrupts

असं समजा…

वर्गात शंका सोडवणाऱ्या बाई

साठ मुलांच्या वर्गाला बाई एक धडा शिकवत आहेत. शंका सोडवायची एक पद्धत म्हणजे दर चार ओळींनंतर थांबून प्रत्येक मुलाला क्रमाने विचारायचं, “काही शंका? काही शंका?” — थकवणारं, आणि बहुतेक वेळ वायाच (polling / programmed I/O). त्यापेक्षा चांगली पद्धत: ज्याला मदत हवी तो फक्त हात वर करतो. बाई बोलत असलेलं वाक्य पूर्ण करतात, पुस्तकातल्या त्या ओळीवर बोट ठेवतात, शंका सोडवतात, आणि मग त्याच ओळीपासून पुढे सुरू करतात (interrupt: चालू instruction पूर्ण करा, PC जपून ठेवा, service routine चालवा, परत या). दोन हात एकदम वर गेले, तर आधी कोणाचं ऐकायचं ते एक ठरलेला नियम सांगतो (priority), आणि मुख्याध्यापक एखादी सूचना घेऊन वर्गात आले, तर ती कोणीच टाळू शकत नाही (non-maskable interrupt). साठ वह्या गोळा करून staffroom मध्ये न्यायच्या असतील, तर बाई फक्त वर्गाच्या मॉनिटरला ते काम सांगतात आणि शिकवणं चालूच ठेवतात; काम पूर्ण झाल्यावरच तो त्यांना सांगतो (DMA).

रोजच्या जीवनातपरीक्षेच्या विषयात
प्रत्येक मुलाला पुन्हा पुन्हा “काही शंका?” विचारणेProgrammed I/O (polling): CPU सतत device ची स्थिती तपासत राहतो
विद्यार्थ्याने वर केलेला हातDevice कडून आलेली interrupt request (IRQ)
पुस्तकातल्या ओळीवर बोट, उत्तर, मग पुढे सुरूPC आणि flags जपणे, ISR चालवणे, परत येणे
टाळता न येणारी मुख्याध्यापकांची सूचनाNon-maskable interrupt (उदा. वीज जाणे)
मॉनिटर स्वतःच वह्या घेऊन जातोDMA: controller पूर्ण block हलवतो, फक्त शेवटी interrupt करतो

संकल्पना

Block स्तरावर संगणक म्हणजे CPU + मेमरी + I/O modules, आणि ते तीन भागांच्या system bus ने जोडलेले असतात. Address bus CPU ला हवं असलेलं ठिकाण वाहून नेतो (एकदिशा: CPU → मेमरी/I/O); n address lines असतील तर CPU 2n locations address करू शकतो. Data bus प्रत्यक्ष data वाहून नेतो (दुदिशा); त्याची रुंदी म्हणजे एका transfer मध्ये हलणारे bits. Control bus memory read/write, I/O read/write, interrupt request, bus request/grant आणि clock असे signals वाहून नेतो. Devices interfaces/ports मार्फत जोडलेली असतात; त्यांना एकतर मेमरीचाच भाग म्हणून address केलं जातं (memory-mapped I/O) किंवा वेगळ्या I/O instructions ने (isolated I/O).

Processor आणि I/O यांचा संवाद तीन प्रकारे होतो. Programmed I/O: CPU device चा status bit सतत तपासत राहतो (busy-waiting), त्यात CPU चा वेळ वाया जातो. Interrupt-driven I/O: device तयार झाल्यावर interrupt पाठवते; मधल्या वेळात CPU दुसरं काम करतो, पण प्रत्येक word त्याला स्वतःच हलवावा लागतो. DMA (Direct Memory Access): CPU DMA controller ला सुरुवातीचा address, words ची संख्या आणि दिशा देतो; controller bus ताब्यात घेतो (bus request / bus grant, HOLD/HLDA) आणि device व मेमरी यांच्यामध्ये पूर्ण block हलवतो — cycle stealing ने किंवा burst mode मध्ये — आणि शेवटी CPU ला एकदाच interrupt करतो. Disks सारख्या वेगवान, मोठ्या प्रमाणात data हलवणाऱ्या devices साठी DMA योग्य आहे.

Interrupt आला की CPU चालू instruction पूर्ण करतो, PC आणि flags stack वर जपून ठेवतो, Interrupt Service Routine (ISR) चा address शोधतो — बहुतेकदा interrupt vector table मधून — ती चालवतो, आणि return instruction आल्यावर जपलेली स्थिती परत आणतो. Hardware interrupts devices कडून येतात आणि ते maskable (बंद करता येणारे) किंवा non-maskable (NMI, उदा. वीज जाणे) असतात. Software interrupts / traps instructions मुळे (system calls) किंवा errors मुळे (शून्याने भागाकार, अवैध opcode, page fault — यांना exceptions म्हणतात) निर्माण होतात. अनेक devices असतील तर priority software मध्ये polling क्रमाने किंवा hardware मध्ये daisy chaining ने ठरते; daisy chain मध्ये CPU च्या सर्वांत जवळच्या device ला सर्वोच्च priority असते.

महत्त्वाचे मुद्दे व सूत्रे

  • Address bus: एकदिशा (CPU कडून); data bus: दुदिशा; control bus: स्वतंत्र signal lines
  • n address lines → 2n locations; data bus ची रुंदी = दर transfer मागे bits
  • Programmed I/O: CPU busy-wait करतो; interrupt I/O: device signal देईपर्यंत CPU मोकळा; DMA: CPU शिवाय block हलतो
  • DMA bus request/grant (HOLD/HLDA) वापरतो; modes: cycle stealing आणि burst
  • प्रत्येक instruction cycle च्या शेवटी CPU interrupts तपासतो
  • Interrupt आल्यावर: instruction पूर्ण → PC + flags stack वर → ISR चालवा → स्थिती परत → पुढे सुरू
  • NMI बंद करता येत नाही (वीज जाणे); शून्याने भागाकार हा अंतर्गत trap/exception आहे
  • Daisy chain: स्थानानुसार priority — CPU च्या सर्वांत जवळचे device सर्वोच्च

सोडवलेले उदाहरण

एक program address 2000 वरची one-word instruction execute करत असताना keyboard interrupt येतो. ISR address 6000 पासून सुरू होते. CPU काय काय करतो ते क्रमाने लिहा.

उकल पाहा
  1. 2000 वरची चालू instruction पूर्ण करा. PC मध्ये आधीच 2001, म्हणजे पुढच्या instruction चा address आहे.
  2. Interrupt ला acknowledge करा आणि (सहसा) पुढचे maskable interrupts बंद करा.
  3. PC (2001) आणि flag register stack वर push करा.
  4. PC मध्ये ISR चा address 6000 (vector table मधून) भरा आणि ISR चालवा — ती keyboard port मधून key code वाचते.
  5. Return-from-interrupt instruction आल्यावर flags आणि PC (2001) pop करा आणि काहीच झालं नव्हतं अशा प्रकारे program पुढे चालू ठेवा.

उत्तर: Instruction पूर्ण → PC (2001) आणि flags जपा → 6000 वर उडी → ISR चालवा → स्थिती परत → 2001 पासून पुढे सुरू

परीक्षेसाठी झटपट युक्ती

तीन I/O पद्धतींचा क्रम CPU च्या सहभागानुसार लावा: programmed I/O (सर्वांत जास्त) > interrupt-driven > DMA (सर्वांत कमी). प्रश्नात “large block”, “disk” किंवा “without the CPU” असं काही असेल → DMA.

नेहमीच्या चुका

  • साध्या interrupt साठी CPU instruction अर्ध्यावर सोडत नाही; आधी चालू instruction पूर्ण करतो.
  • DMA सुद्धा एक interrupt वापरतो — पूर्ण block संपल्यावर, प्रत्येक word साठी नाही.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. Which part of the system bus is unidirectional?

System bus चा कोणता भाग एकदिशा (unidirectional) असतो?

Q2. Transferring a large block of data from disk to main memory with the least CPU involvement is done by:

Disk वरून मुख्य मेमरीत मोठा data block, CPU चा सर्वांत कमी सहभाग ठेवून, कशाने हलवला जातो?

Q3. An I/O device raises a maskable interrupt (interrupts are enabled) while the CPU is in the middle of an instruction. What does the CPU do?

CPU एका instruction च्या मध्यात असताना एक I/O device maskable interrupt निर्माण करते (interrupts चालू आहेत). CPU काय करतो?

Q4. A device is polled 1000 times per second. Each poll takes 100 clock cycles, and the CPU runs at 100 MHz. What fraction of CPU time is spent polling?

एक device सेकंदाला 1000 वेळा poll केले जाते. प्रत्येक poll ला 100 clock cycles लागतात, आणि CPU 100 MHz वर चालतो. CPU च्या वेळेपैकी किती भाग polling मध्ये जातो?

↑ विषयसूचीकडे परत

संगणक · संगणक भाषा · विषय 11 / 16

Assembly विरुद्ध उच्चस्तरीय भाषा; Compiler, Interpreter, Assembler, Linker, Loader

Assembly vs High-Level Languages; Compiler, Interpreter, Assembler, Linker, Loader

असं समजा…

मराठी कादंबरीचा अनुवाद विरुद्ध ग्रामसभेतला दुभाषी

समजा एक लोकप्रिय मराठी कादंबरी इंग्रजी वाचकांपर्यंत पोहोचवायची आहे. एक मार्ग: एक अनुवादक महिनोन्महिने काम करून संपूर्ण पुस्तक अनुवादित करतो, सगळी अस्पष्ट वाक्ये एकत्र यादी करून दाखवतो, आणि इंग्रजी आवृत्ती छापली जाते. त्यानंतर वाचक ते इंग्रजी पुस्तक हवं तितक्या वेळा वाचतात, अनुवादकाची गरजच नाही — हा compiler. दुसरा मार्ग: ग्रामसभेत एक परदेशी पाहुणा आला आहे, आणि एक दुभाषी (interpreter) वक्त्याच्या शेजारी उभी राहून ते बोलत जातील तसं वाक्य-वाक्य अनुवाद करते; एखादं वाक्य समजलंच नाही तर ती तिथेच थांबते — आणि उद्या तेच भाषण पुन्हा झालं तर तिला पुन्हा सगळा अनुवाद करावा लागतो. लघुलेखकाचं shorthand — जिथे प्रत्येक खूण एका ठरलेल्या शब्दासाठी असते — ते म्हणजे assembly language, आणि ते शब्दशः टाइप करणं म्हणजे assembler. वेगवेगळ्या लेखकांनी लिहिलेली प्रकरणं आणि संदर्भग्रंथातलं एक परिशिष्ट एकत्र शिवून एक खंड तयार करणारा बाइंडर म्हणजे linker, आणि बांधलेलं पुस्तक वाचकाच्या टेबलावर नेऊन ठेवणारा ग्रंथालयातला शिपाई म्हणजे loader.

रोजच्या जीवनातपरीक्षेच्या विषयात
संपूर्ण पुस्तक एकदाच अनुवादित; छापील आवृत्ती अनेकदा वाचलीCompiler: संपूर्ण program → object code, मग compiler शिवाय चालतो
वाक्य-वाक्य अनुवाद करणारी दुभाषी, पहिल्याच गोंधळाच्या वाक्यावर थांबतेInterpreter: statement-statement, पहिल्या error वर थांबतो, प्रत्येक run ला पुन्हा अनुवाद
दर शब्दासाठी एक shorthand खूण, लघुलेखक टाइप करतोदर machine instruction साठी एक assembly mnemonic, assembler अनुवाद करतो
प्रकरणं + संदर्भ परिशिष्ट एका पुस्तकात शिवणारा बाइंडरLinker: object files + library code जोडून एक executable
पुस्तक वाचकाच्या टेबलावर ठेवणारा शिपाईLoader: executable मेमरीत ठेवून सुरू करतो

संकल्पना

भाषांचे पिढ्यांमध्ये (generations) गट केले जातात. Machine language (1GL) म्हणजे शुद्ध binary — CPU फक्त हीच execute करतो; वेगवान पण machine-dependent आणि लिहायला कठीण. Assembly language (2GL) bit patterns ऐवजी mnemonics (MOV, ADD, JMP) आणि labels वापरते; प्रत्येक statement सहसा नेमकी एक machine instruction होते, म्हणून ती अजूनही machine-dependent (portable नाही) आहे, पण hardware वर पूर्ण नियंत्रण देते — device drivers आणि embedded code मध्ये वापरतात. उच्चस्तरीय भाषा (high-level languages, 3GL: C, C++, Java, Python) इंग्रजी आणि गणिताच्या जवळच्या, portable असतात, आणि एक statement अनेक machine instructions होते. SQL सारख्या 4GL मध्ये तुम्हाला काय हवं ते सांगता, कसं ते नाही.

Assembler assembly चे machine code मध्ये रूपांतर करतो (two-pass assembler पहिल्या pass मध्ये labels ची symbol table तयार करतो). Compiler संपूर्ण high-level program object code मध्ये अनुवादित करतो आणि तो पूर्ण तपासल्यानंतर सगळे errors यादीने दाखवतो; तयार झालेला program वेगाने चालतो आणि चालताना compiler ची गरज नसते (C, C++). Interpreter एका वेळी एक statement अनुवादित करून execute करतो, पहिल्या error वर थांबतो, object file तयार करत नाही आणि त्याचा program संथ चालतो (Python, BASIC; Java bytecode JVM चालवते). Cross-compiler दुसऱ्या machine साठी code तयार करतो.

C program तयार होण्याचे टप्पे: preprocessor (#include आणि #define हाताळतो, comments काढतो) → compiler (C ते assembly) → assembler (object file मध्ये, .o/.obj) → linker (object files ना printf सारख्या library code शी जोडतो, बाह्य references सोडवतो, executable तयार करतो) → loader (executable मेमरीत copy करतो, relocate करतो आणि सुरू करतो). Syntax errors compiler पकडतो; declare केलेलं पण कधीच define न केलेलं function linker error देतं; शून्याने भागाकार हा run-time error आहे.

महत्त्वाचे मुद्दे व सूत्रे

  • 1GL machine, 2GL assembly, 3GL उच्चस्तरीय (C, Java), 4GL (SQL), 5GL (Prolog, AI)
  • Assembly: mnemonics, machine code शी एकास-एक, machine-dependent, assembler लागतो
  • Compiler: संपूर्ण program एकदम, सगळे errors यादीत, object code तयार, जलद execution
  • Interpreter: ओळ-ओळ, पहिल्या error वर थांबतो, object code नाही, संथ execution
  • C build साखळी: preprocessor → compiler → assembler → linker → loader
  • Linker बाह्य references सोडवतो; loader मेमरी देतो आणि relocate करतो
  • Syntax error → compile time; function चा body नसणे → link time; शून्याने भागाकार → run time

सोडवलेले उदाहरण

marks.c या फाइलमध्ये तीन वेगवेगळ्या चुका आहेत: (1) एक semicolon राहून गेला आहे; (2) avg() हे function prototype ने declare केलं आहे आणि call केलं आहे, पण त्याचा body कुठेच लिहिलेला नाही; (3) एका विद्यार्थ्यासाठी 0 होणाऱ्या variable ने भागाकार केला आहे. प्रत्येक चूक कोणत्या टप्प्यावर उघड होते?

उकल पाहा
  1. Preprocessor फक्त headers copy करतो आणि macros उलगडतो; तो C चं व्याकरण तपासत नाही.
  2. (1) Semicolon नसल्याने व्याकरण मोडतं → compiler सांगतो (compile-time syntax error).
  3. (2) Prototype मुळे call compile होतो, पण कोणत्याही object file मध्ये avg() चा body नाही → linker “undefined reference to avg” असं सांगतो.
  4. (3) मजकुरात काहीच चूक नाही, म्हणून program build होतो. तो चालवल्यावर शून्याने भागाकार होऊन तो कोसळतो → run-time error.

उत्तर: (1) compiler, (2) linker, (3) run time

परीक्षेसाठी झटपट युक्ती

C ची साखळी “Please Compile And Link, Later” अशी लक्षात ठेवा: Preprocessor, Compiler, Assembler, Linker, Loader.

नेहमीच्या चुका

  • Interpreter कोणतीही object/executable file तयार करत नाही; “जलद execution” नेहमी compiler सोबतच येतं.
  • Linker आणि loader वेगळे आहेत: linker executable file बनवतो; तुम्ही program चालवता तेव्हा loader ती मेमरीत ठेवतो.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. Which translator translates and executes a high-level program one statement at a time?

कोणता translator उच्चस्तरीय program एका वेळी एक statement अनुवादित करून execute करतो?

Q2. Combining several object files and library routines into a single executable file is the job of the:

अनेक object files आणि library routines एकत्र करून एकच executable file बनवणे हे कोणाचे काम आहे?

Q3. Which statement about assembly language is FALSE?

Assembly language बद्दल कोणते विधान असत्य (FALSE) आहे?

Q4. The correct order of stages when a C program is built and run is:

C program build करून चालवताना टप्प्यांचा योग्य क्रम कोणता?

↑ विषयसूचीकडे परत

संगणक · संगणक भाषा · विषय 12 / 16

C ची मूलतत्त्वे: Data Types, Operators, Precedence, Type Conversion, printf

C Basics: Data Types, Operators, Precedence, Type Conversion, printf

असं समजा…

गावच्या दूध संकलन केंद्रावरचे कॅन

गावच्या दूध संकलन केंद्रावर दूध ठरलेल्या मापाच्या भांड्यांत मोजलं जातं: 250 ml चा मग, 1 लिटरचा कॅन, 40 लिटरचा ड्रम. प्रत्येक भांड्यावर त्यात काय आहे याचं लेबल असतं. मगातलं दूध मोठ्या कॅनमध्ये ओतलं तर काहीच सांडत नाही — हे सुरक्षित widening (char → int → double). मोठ्या कॅनमधलं दूध लहान मगात ओतलं तर दूध ओसंडून वाहतं — हे narrowing, ज्यात data गमावला जातो. फक्त पूर्ण लिटर नोंदवणाऱ्या काउंटरला 2.75 लिटर दिलं तर तो 2 लिहितो: अपूर्णांक सरळ गळून जातो — जसं double हे int मध्ये ठेवताना C अपूर्णांक टाकून देतं. कारकुनाने म्हशीचं दूध गायीच्या दुधाच्या fat chart ने वाचलं तर आकडा निरर्थक येतो — जसं float ला %d ने छापणं. आणि कारकून नेहमी ठरलेल्या क्रमानेच काम करतो — आधी वजन, मग fat तपासणी, मग दराने गुणाकार — तसाच C मध्ये operators चा क्रम precedence ठरवते.

रोजच्या जीवनातपरीक्षेच्या विषयात
ठरलेल्या मापाचे मग, कॅन, ड्रमठरलेल्या आकाराचे data types: char (1 B), int (4 B), double (8 B)
मग मोठ्या कॅनमध्ये ओतला — काहीच गेलं नाहीImplicit widening / promotion (int → double)
पूर्ण लिटर काउंटर 2.75 L ला 2 नोंदवतोdouble → int रूपांतरात अपूर्णांक कापला जातो
म्हशीचं दूध गायीच्या chart ने वाचलंचुकीचा printf format specifier कचरा छापतो
ठरलेला क्रम: वजन, fat तपासणी, दराने गुणाकारOperator precedence आणि associativity

संकल्पना

C चे मूलभूत types (एक नेहमीची system गृहीत धरा): char 1 byte, short 2, int 4, long 4 किंवा 8, float 4, double 8. Signed n-bit पूर्णांकाची व्याप्ती −2n−1 ते 2n−1 − 1 (4-byte int म्हणजे साधारण ±2.1 × 10⁹); unsigned ची व्याप्ती 0 ते 2n − 1. sizeof हा operator आहे जो bytes मध्ये आकार देतो. पूर्णांक भागाकारात अपूर्णांक गळतो (7 / 2 म्हणजे 3), आणि % फक्त पूर्णांकांवर चालतो, ज्याच्या निकालाचं चिन्ह डाव्या operand चं असतं (-7 % 2 म्हणजे −1).

सर्वोच्च ते सर्वांत कमी precedence नुसार operators: postfix () [] ++ -- → unary ! ~ ++ -- - (type) sizeof → * / % → + - → shifts << >> → relational < <= > >= → == != → & → ^ → | → && → || → ?: → assignment → comma. समान precedence चे operators डावीकडून उजवीकडे गटबद्ध होतात, फक्त unary operators, ?: आणि assignment उजवीकडून डावीकडे. && आणि || short-circuit करतात: डाव्या बाजूनेच उत्तर ठरलं तर उजवी बाजू evaluate केली जात नाही.

मिश्र expressions मध्ये C लहान type चे मोठ्या type मध्ये रूपांतर करते (implicit conversion: char/short → int → long → float → double); लहान type मध्ये assign केलं तर कापलं जातं. Cast रूपांतर सक्तीने करतो: (float)7 / 2 म्हणजे 3.5, पण (float)(7 / 2) म्हणजे 3.0, कारण भागाकार आधीच int मध्ये झालेला असतो. नेहमीचे printf formats: %d/%i int, %u unsigned, %ld long, %f float/double (default 6 दशांश स्थळे), %e घातांकी रूप, %c char, %s string, %x hex, %o octal, %p pointer, %% टक्केवारीचं चिन्ह; %5d रुंदी 5 ठेवतो, %-5d डावीकडे जुळवतो, %.2f 2 दशांश स्थळे छापतो.

महत्त्वाचे मुद्दे व सूत्रे

  • वेगळं सांगितलं नसेल तर char 1, short 2, int 4, float 4, double 8 bytes गृहीत धरा
  • 7 / 2 = 3; 7 % 2 = 1; -7 / 2 = −3; -7 % 2 = −1 (डाव्या operand चं चिन्ह)
  • Precedence: unary > * / % > + − > << >> > relational > == != > & > ^ > | > && > || > ?: > = > ,
  • उजवीकडून डावीकडे गटबद्धता: unary operators, ?:, assignment (a = b = 5)
  • Short-circuit: a && b मध्ये a 0 असेल तर b वगळला जातो; a || b मध्ये a शून्येतर असेल तर b वगळला जातो
  • x << n = x × 2n; x >> n = x ÷ 2n (ऋण नसलेल्या x साठी)
  • Promotion: char → int → long → float → double; cast फक्त लगेच नंतरच्या operand वर लागू होतो
  • printf: %d %u %f %c %s %x %o %e %p %%; %.2f = 2 दशांश स्थळे; %5d = रुंदी 5

सोडवलेले उदाहरण

हा program काय छापतो?

#include <stdio.h>
int main(void) {
    int a = 7, b = 2;
    float f = a / b;
    float g = (float)a / b;
    printf("%.2f %.2f %d %d\n", f, g, a % b, -a % b);
    return 0;
}
उकल पाहा
  1. a / b म्हणजे int ÷ int = 3 (अपूर्णांक गळतो). त्यानंतरच 3 float मध्ये ठेवला जातो, म्हणून f = 3.0.
  2. (float)a ने 7.0 मिळतो, आणि 7.0 / 2 हा float भागाकार = 3.5, म्हणून g = 3.5.
  3. a % b = 7 % 2 = 1.
  4. -a % b: unary minus हा % पेक्षा घट्ट बांधला जातो, म्हणून (−7) % 2 = −1 (चिन्ह डाव्या operand प्रमाणे).
  5. %.2f दोन दशांश स्थळे छापतो.

उत्तर: 3.00 3.50 1 -1

परीक्षेसाठी झटपट युक्ती

Precedence च्या प्रश्नांत आधी स्वतःच कंस घाला, या क्रमाने: unary, मग * / %, मग + −, मग shifts, मग तुलना, मग bitwise & ^ |, मग && ||, मग ?:, मग =. लक्षात ठेवण्यासाठी: “Uncle Arjun Saw Rani Buying Lots of Tea Again” — Unary, Arithmetic, Shift, Relational, Bitwise, Logical, Ternary, Assignment.

नेहमीच्या चुका

  • float f = 7 / 2; मध्ये 3.5 नव्हे, 3.0 साठवला जातो — रूपांतराआधीच भागाकार int मध्ये होतो.
  • Bitwise & ची precedence == पेक्षा कमी आहे: x & 1 == 0 म्हणजे x & (1 == 0), जे नेहमी 0 असते.
  • Float ला %d ने (किंवा int ला %f ने) छापणं हे undefined behaviour आहे आणि त्याने रूपांतरित किंमत नव्हे, कचरा छापला जातो.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
int main(void) {
    int x = 5 + 3 * 2 - 8 / 4 % 3;
    printf("%d", x);
    return 0;
}

Q2. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
int main(void) {
    int a = 12, b = 10;
    printf("%d %d %d %d", a & b, a | b, a ^ b, a << 2);
    return 0;
}

Q3. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
int main(void) {
    int a = 0, b = 5;
    if (a && ++b)
        printf("yes ");
    printf("%d %d", a, b);
    return 0;
}

Q4. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
int main(void) {
    char c = 'A' + 2;
    printf("%c %d %x %o", c, c, c, c);
    return 0;
}

↑ विषयसूचीकडे परत

संगणक · संगणक भाषा · विषय 13 / 16

C मधील Control Flow आणि Loops (Output ओळखणे)

C Control Flow and Loops (Output Prediction)

असं समजा…

आपल्या मार्गावर धावणारी PMPML बस

पुण्यातली एक PMPML बस थांबा 1 पासून थांबा 20 पर्यंत आपल्या मार्गावर धावते आहे. प्रत्येक थांब्यावरून निघण्याआधी कंडक्टर एकच अट तपासतो: “शेवटचा थांबा आला का?” नसेल तर बस पुढे जाते — हे तपासा-आणि-पुन्हा-करा म्हणजेच loop, आणि थांब्याचा क्रमांक म्हणजे loop counter. ज्या थांब्यावर कोणी थांबलेलं नाही आणि कोणाला उतरायचंही नाही, तिथे बस थांबत नाही; त्या थांब्याचं उरलेलं काम सोडून ती सरळ पुढच्या थांब्याकडे जाते — हे continue. बस थांबा 12 वर बंद पडली, तर मार्ग तिथेच संपतो आणि सगळे खाली उतरतात — हे break. आता एका प्रवाशाचा विचार करा: थांबा 5 वर चढलेला प्रवासी थांबा 6, 7, 8 … असा पुढे प्रवास करत राहतो, जोपर्यंत तो उतरायचं ठरवत नाही. switch नेमकं असंच चालतं: control जुळणाऱ्या case वर आत शिरतो आणि break भेटेपर्यंत पुढचे सगळे cases चालवत राहतो.

रोजच्या जीवनातपरीक्षेच्या विषयात
थांबा क्रमांक 1, 2, 3 …Loop counter (i)
पुढे निघण्याआधी कंडक्टर तपासतो “शेवटचा थांबा?”प्रत्येक फेरीला तपासली जाणारी loop condition
रिकामा थांबा — बस तो वगळून पुढे जातेcontinue: या फेरीचं उरलेलं काम वगळा
बस बंद पडली — मार्ग लगेच संपलाbreak: loop मधून लगेच बाहेर पडा
थांबा 5 वर चढलेला प्रवासी उतरेपर्यंत पुढे जात राहतोswitch जुळणाऱ्या case वर शिरतो आणि break पर्यंत fall through करतो

संकल्पना

if / else दोन मार्गांपैकी एक निवडतो; कोणतीही शून्येतर किंमत सत्य मानली जाते. Indentation कसंही असलं तरी else नेहमी सर्वांत जवळच्या, जोडी न लागलेल्या if शी जोडला जातो (dangling-else नियम). if (x = 0) हे तुलना नव्हे, assignment आहे: ते x ला 0 करतं आणि condition असत्य ठरते. switch फक्त integer/char किमतींवर चालतो; control जुळणाऱ्या case label वर उडी मारतो आणि break किंवा शेवट येईपर्यंत पुढच्या प्रत्येक case मध्ये fall through करतो. कोणताही case जुळला नाही तर default चालतो, तो कुठेही लिहिलेला असला तरी.

C मध्ये तीन loops आहेत. for (init; condition; update) आणि while (condition) प्रत्येक फेरीच्या आधी तपासतात, म्हणून ते एकदाही न चालण्याची शक्यता असते. do { … } while (condition); प्रत्येक फेरीच्या नंतर तपासतो, म्हणून तो कमीत कमी एकदा तरी नक्की चालतो. for loop मध्ये continue update भागाकडे (उदा. i++) आणि मग तपासणीकडे उडी मारतो; break फक्त सर्वांत आतल्या loop किंवा switch मधून बाहेर पडतो.

Output ओळखताना कधीही अंदाज लावू नका: प्रत्येक variable साठी एक स्तंभ आणि प्रत्येक फेरीसाठी एक ओळ असलेली छोटी सारणी काढा, आणि ओळ-ओळ ती भरत जा. Conditions मधल्या post-increment/decrement कडे लक्ष ठेवा: while (n-- > 2) मध्ये n ची जुनी किंमत तुलना केली जाते आणि मग n कमी होतो — शेवटच्या, असत्य ठरलेल्या तपासणीतसुद्धा. for (…); किंवा while (…); नंतर चुकून आलेला semicolon loop ला रिकामा body देतो.

महत्त्वाचे मुद्दे व सूत्रे

  • शून्येतर = सत्य, 0 = असत्य; if (x = 0) assign करतो आणि नेहमी असत्य असतो
  • else सर्वांत जवळच्या जोडी न लागलेल्या if शी जोडला जातो
  • switch: फक्त integer/char; break पर्यंत fall through; case labels constants च असावे लागतात
  • for/while: आधी तपासणी (0 किंवा जास्त फेऱ्या); do-while: शेवटी तपासणी (कमीत कमी 1 फेरी)
  • continue → पुढची फेरी (for loop मध्ये आधी update चालतो); break → सर्वांत आतल्या loop/switch मधून बाहेर
  • i = 1..n आणि j = i..n असलेले nested loops n(n + 1)/2 वेळा चालतात
  • for (i = 0; i < 5; i++); — semicolon म्हणजे रिकामा body; शेवटी i = 5

सोडवलेले उदाहरण

हा program काय छापतो?

#include <stdio.h>
int main(void) {
    int i, j, count = 0;
    for (i = 1; i <= 4; i++)
        for (j = i; j <= 4; j++)
            count++;
    printf("%d", count);
    return 0;
}
उकल पाहा
  1. i = 1: j 1, 2, 3, 4 असा चालतो → 4 वेळा.
  2. i = 2: j 2, 3, 4 असा चालतो → 3 वेळा.
  3. i = 3: j 3, 4 असा चालतो → 2 वेळा. i = 4: j 4 → 1 वेळा.
  4. एकूण = 4 + 3 + 2 + 1 = 10, म्हणजेच n = 4 साठी n(n + 1)/2.

उत्तर: 10

परीक्षेसाठी झटपट युक्ती

continue/break असलेल्या loops साठी i च्या किमती एका ओळीत लिहा, continue ने वगळलेल्या आणि break पासून पुढच्या सगळ्या खोडा, आणि उरलेल्यांची बेरीज करा. Switch साठी कोणत्या case मध्ये शिरतो ते शोधा आणि पहिल्या break पर्यंत खाली वाचत जा.

नेहमीच्या चुका

  • break नसलेला switch जुळलेल्या case च्या खालचे सगळे cases चालवतो — default खाली असेल तर तोही.
  • while (n-- > 2) मध्ये शेवटच्या, अयशस्वी तपासणीत n आणखी एकदा कमी होतो.
  • for (i = 0; i < 5; i++); नंतर printf("%d", i); असेल तर 0 ते 4 नव्हे, फक्त एकदा 5 छापलं जातं — semicolon loop तिथेच संपवतो.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
int main(void) {
    int x = 2;
    switch (x) {
        case 1: printf("one ");
        case 2: printf("two ");
        case 3: printf("three ");
                break;
        default: printf("other ");
    }
    return 0;
}

Q2. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
int main(void) {
    int n = 5;
    while (n-- > 2)
        printf("%d ", n);
    printf("| %d", n);
    return 0;
}

Q3. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
int main(void) {
    int i, sum = 0;
    for (i = 1; i <= 10; i++) {
        if (i % 3 == 0) continue;
        if (i > 7) break;
        sum += i;
    }
    printf("%d", sum);
    return 0;
}

Q4. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
int main(void) {
    int x = 5;
    if (x = 0)
        printf("zero");
    else
        printf("nonzero %d", x);
    return 0;
}

↑ विषयसूचीकडे परत

संगणक · संगणक भाषा · विषय 14 / 16

C मधील Arrays, Strings, Pointers आणि Functions (Recursion, Call by Value/Reference)

C Arrays, Strings, Pointers and Functions (Recursion, Call by Value/Reference)

असं समजा…

मुंबईच्या चाळीतल्या खोल्या

मुंबईच्या एका जुन्या चाळीत एकाच पॅसेजच्या बाजूने लागोपाठ क्रमांकांच्या खोल्या आहेत — 101, 102, 103 … — सगळ्या सारख्याच आकाराच्या. हाच array: शेजारी-शेजारी एकसारखे खोके, आणि चाळीचं नाव सांगतं की पहिली खोली कुठे आहे. Pointer म्हणजे खोली क्रमांक लिहिलेली एक चिठ्ठी. चिठ्ठी वाचणं म्हणजे खोलीत जाणं नव्हे; तिथे कोण राहतं ते पाहायला तुम्हाला त्या खोलीपर्यंत चालत जावं लागतं — हे dereferencing (*p). 101 च्या “दोन खोल्या पुढे” म्हणजे 103, खोली कितीही मोठी असली तरी — जसं p + 2 दोन bytes नव्हे, दोन elements पुढे सरकतो. आता, सोसायटीच्या सेक्रेटरींना तुमचं वीज बिल तपासायचं असेल, तर तुम्ही त्यांना झेरॉक्स देऊ शकता: त्यांनी त्यावर काहीही खरडलं तरी तुमचं मूळ बिल स्वच्छ राहतं — हे call by value. किंवा तुम्ही त्यांना तुमचा खोली क्रमांक देऊ शकता, आणि मग ते आत येऊन तुमची भिंतसुद्धा रंगवू शकतात — हे call by reference (address पाठवणे).

रोजच्या जीवनातपरीक्षेच्या विषयात
एका रांगेत सारख्या आकाराच्या खोल्या 101, 102, 103 …सलग मेमरीतले array elements
खोली क्रमांक लिहिलेली चिठ्ठीPointer (address धरून ठेवतो)
तिथे कोण राहतं ते पाहायला खोलीपर्यंत जाणेDereferencing: *p
“दोन खोल्या पुढे”Pointer arithmetic: p + 2 दोन elements पुढे जातो
सेक्रेटरींना झेरॉक्स विरुद्ध तुमचा खोली क्रमांकCall by value विरुद्ध call by reference (&x पाठवणे)

संकल्पना

Array एकाच type चे elements सलग मेमरीत साठवतो. Indexes 0 पासून सुरू होतात, म्हणून int a[5] मध्ये a[0] ते a[4] असतात, आणि C कोणतीही bounds checking करत नाही. Expression मध्ये array चं नाव पहिल्या element कडे निर्देश करणारा pointer बनतं, आणि a[i] म्हणजे नेमकं *(a + i); a[i] चा address = base + i × (एका element चा आकार). String म्हणजे null character '\0' ने संपणारा char array: strlen त्याच्या आधीची अक्षरे मोजतो, तर array वरचा sizeof '\0' धरून संपूर्ण array मोजतो.

Pointer मध्ये एक address असतो. &x x चा address देतो; *p p मधल्या address वर साठवलेली किंमत देतो. Pointer मध्ये 1 मिळवला की तो एका element ने पुढे सरकतो (int * साठी 4 bytes, char * साठी 1 byte). C प्रत्येक argument by value पाठवते: function ला एक copy मिळते, म्हणून parameter बदलला तरी बोलावणाऱ्याचा (caller चा) variable बदलत नाही. Function ला variable बदलू द्यायचा असेल तर त्याचा address पाठवा आणि * मार्फत काम करा — C मध्ये call by reference असाच होतो (उदा. swap(&a, &b), scanf("%d", &n)). Arrays पहिल्या element कडे निर्देश करणाऱ्या pointer च्या रूपात पाठवले जातात, म्हणून function caller चा array बदलू शकतं.

Recursive function स्वतःलाच call करतं. त्याला calls थांबवणारी base case लागते, आणि प्रत्येक call त्या base case च्या जवळ जायलाच हवा. प्रत्येक call ला stack वर local variables ची स्वतःची copy मिळते; recursive call च्या नंतर लिहिलेली statements calls परत येत असताना, उलट्या क्रमाने चालतात. static local variable एकदाच तयार होतो आणि calls दरम्यान आपली किंमत टिकवून ठेवतो.

महत्त्वाचे मुद्दे व सूत्रे

  • a[i] ≡ *(a + i) ≡ i[a]; a[i] चा address = base + i × sizeof(element)
  • 2-D array (row-major): a[i][j] चा address = base + (i × columns + j) × size
  • char s[] = "CET"; → sizeof 4 ('\0' धरून), strlen 3
  • & = चा address; * = वरची किंमत; p + 1 एक element पुढे
  • C by value पाठवते; caller चे variables बदलायचे असतील तर addresses (pointers) पाठवा
  • Arrays pointers म्हणून पाठवले जातात, म्हणून function मध्ये केलेले बदल बाहेरही दिसतात
  • Recursion: base case + लहान उप-प्रश्न; recursive call नंतरचा code उलट्या क्रमाने चालतो
  • Static local variable एकदाच initialize होतो आणि calls दरम्यान आपली किंमत टिकवतो

सोडवलेले उदाहरण

हा program काय छापतो?

#include <stdio.h>
void swapVal(int x, int y) { int t = x; x = y; y = t; }
void swapPtr(int *x, int *y) { int t = *x; *x = *y; *y = t; }
int main(void) {
    int a = 3, b = 8;
    swapVal(a, b);
    printf("%d %d\n", a, b);
    swapPtr(&a, &b);
    printf("%d %d\n", a, b);
    return 0;
}
उकल पाहा
  1. swapVal(a, b) ला x = 3, y = 8 अशा copies मिळतात आणि ते फक्त copies ची अदलाबदल करतं. main मधले a आणि b जसेच्या तसे → 3 8 छापतं.
  2. swapPtr(&a, &b) ला addresses मिळतात. *x म्हणजे स्वतः a आणि *y म्हणजे स्वतः b, म्हणून अदलाबदलीने main चे variables बदलतात → 8 3 छापतं.

उत्तर: पहिल्या ओळीत 3 8, मग 8 3

परीक्षेसाठी झटपट युक्ती

Pointer-आणि-array च्या प्रश्नांसाठी array खोक्यांच्या रूपात काढा, खाली indexes लिहा आणि p साठी एक बाण काढा; प्रत्येक *(p + k) किंवा p[k] “बाणाच्या उजवीकडे k खोकी” असं वाचा. Call नंतर छापणाऱ्या recursion मध्ये output calls च्या उलट्या क्रमाने येतो — binary रूपांतरात बाकी खालून वर वाचतो तसा.

नेहमीच्या चुका

  • char s[] = "CET2026" साठी sizeof(s) 7 नव्हे, 8 आहे — लपलेला '\0' मोजला जातो. (ज्या function मध्ये s हा pointer parameter आहे, तिथे sizeof त्याऐवजी pointer चा आकार देतो.)
  • Function मध्ये parameter बदलल्याने caller चा variable कधीच बदलत नाही — pointer मार्फत (*p = …) लिहिलं तरच बदलतो.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
int main(void) {
    int a[] = {10, 20, 30, 40, 50};
    int *p = a + 1;
    printf("%d %d %d", *p, *(p + 2), p[1]);
    return 0;
}

Q2. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
#include <string.h>
int main(void) {
    char s[] = "CET2026";
    printf("%zu %zu", sizeof(s), strlen(s));
    return 0;
}

Q3. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
void show(int n) {
    if (n == 0) return;
    show(n / 2);
    printf("%d", n % 2);
}
int main(void) {
    show(13);
    return 0;
}

Q4. What is the output of this program?

या program चा output काय आहे?

#include <stdio.h>
void change(int x, int *y) {
    x = x * 2;
    *y = *y * 2;
}
int main(void) {
    int a = 5, b = 5;
    change(a, &b);
    printf("%d %d", a, b);
    return 0;
}

↑ विषयसूचीकडे परत

संगणक · ऑपरेटिंग सिस्टमची मूलतत्त्वे · विषय 15 / 16

कार्यप्रणालीची मूलतत्त्वे: Processes, CPU Scheduling, Paging, Deadlock, File Systems

OS Basics: Processes, CPU Scheduling, Paging, Deadlock, File Systems

असं समजा…

कॉलेजजवळचं एका मशीनचं झेरॉक्स दुकान

प्रत्येक कॉलेजजवळ एक झेरॉक्स दुकान असतं — एकच मशीन आणि विद्यार्थ्यांची गर्दी. दुकानदार म्हणजे scheduler आणि मशीन म्हणजे CPU. तो काटेकोरपणे “जो आधी आला तो आधी” असं काम करत असेल, तर पुढे उभा असलेला 200 पानांचा प्रबंध घेऊन आलेला एक विद्यार्थी, प्रत्येकी 2 पानं असलेल्या दहा जणांना खूप वेळ थांबवून ठेवतो (FCFS आणि त्याचा convoy effect). ज्याची पानं सर्वांत कमी त्याचं काम तो आधी करत असेल, तर सरासरी थांबण्याचा वेळ शक्य तितका कमी होतो (SJF) — पण छोटी कामं येतच राहिली तर प्रबंधवाला विद्यार्थी कायमचा थांबूनच राहू शकतो (starvation). तो प्रत्येकाची आळीपाळीने 10 पानं काढत असेल आणि अपूर्ण काम रांगेच्या शेवटी पाठवत असेल, तर प्रत्येकाचं काम पुढे सरकताना दिसतं (Round Robin, time quantum = 10 पानं). आणि दोन विद्यार्थ्यांकडे प्रत्येकी एक पुस्तक आहे, आणि दुसऱ्याचं पुस्तक मिळेपर्यंत दोघंही आपलं सोडायला तयार नाहीत, तर दोघंही कायमचे थांबून राहतात — हे deadlock.

रोजच्या जीवनातपरीक्षेच्या विषयात
एक झेरॉक्स मशीन, अनेक विद्यार्थीएक CPU, ready queue मध्ये अनेक processes
काढायच्या पानांची संख्याCPU burst time
काम न होता नुसता उभं राहण्यात गेलेला वेळWaiting time = turnaround − burst
प्रत्येकी 10 पानं, मग रांगेच्या शेवटीTime quantum असलेला Round Robin
दुसऱ्याला हवं असलेलं पुस्तक धरून बसलेले दोन विद्यार्थीDeadlock: hold-and-wait + circular wait

संकल्पना

कार्यप्रणाली (Operating System) hardware चं व्यवस्थापन करते आणि programs ना सेवा देते: process management, memory management, file management, device (I/O) management, सुरक्षा, आणि user interface (shell किंवा GUI). Kernel हा तिचा गाभा आहे, आणि programs system calls मार्फत त्याच्याकडे सेवा मागतात. प्रकार: batch, multiprogramming, time-sharing (multitasking), real-time आणि distributed. Process म्हणजे चालू असलेला program, ज्याचं वर्णन त्याच्या PCB (Process Control Block) मध्ये असतं. तो new → ready → running → waiting (blocked) → ready … → terminated या अवस्थांमधून जातो; CPU एका process कडून दुसऱ्याकडे वळवणे म्हणजे context switch.

CPU scheduling पुढचा ready process निवडतं. FCFS: येण्याच्या क्रमाने, non-preemptive, convoy effect चा त्रास. SJF: सर्वांत लहान burst आधी; किमान सरासरी waiting time देतं; त्याचं preemptive रूप म्हणजे SRTF; लांब कामं starve होऊ शकतात. Priority: सर्वोच्च priority आधी; starvation वर उपाय म्हणजे aging. Round Robin: प्रत्येक process ला ठरलेला time quantum मिळतो, मग तो रांगेच्या शेवटी जातो; time-sharing साठी बनवलेलं. प्रत्येक process साठी turnaround time = completion − arrival आणि waiting time = turnaround − burst.

Paging मध्ये process ठरलेल्या आकाराच्या pages मध्ये आणि मेमरी तितक्याच आकाराच्या frames मध्ये विभागली जाते; page table pages ना frames शी जोडते. त्याने external fragmentation नाहीसं होतं (शेवटच्या page मध्ये थोडं internal fragmentation उरतं). Logical address = page number + offset, आणि pages ची संख्या = 2address bits ÷ page size. Virtual memory फक्त गरजेच्या pages RAM मध्ये ठेवते; नसलेलं page मागितलं की page fault होतो; सतत faults होत राहणं म्हणजे thrashing; replacement policies म्हणजे FIFO (Belady’s anomaly दाखवू शकतो), LRU आणि Optimal. Deadlock साठी चारही अटी एकत्र लागतात — mutual exclusion, hold and wait, no preemption, circular wait; Banker’s algorithm तो टाळतो. File systems files directories मध्ये मांडतात (single-level, two-level, tree) आणि disk blocks सलग, linked list च्या रूपात, किंवा index block मार्फत देतात (FAT, NTFS, ext4).

महत्त्वाचे मुद्दे व सूत्रे

  • TAT = completion time − arrival time; WT = TAT − burst time
  • FCFS: non-preemptive, convoy effect; SJF: किमान सरासरी WT, लांब कामं starve होऊ शकतात
  • SRTF = preemptive SJF; priority scheduling मधील starvation aging ने दूर होते
  • Round Robin: time quantum सह preemptive; quantum खूप मोठा ठेवला तर तो FCFS सारखा वागतो
  • Process अवस्था: new, ready, running, waiting, terminated; PCB मध्ये प्रत्येक process चा तपशील असतो
  • Paging: page size = frame size; page-table entries = 2logical address bits ÷ page size
  • Deadlock च्या अटी: mutual exclusion, hold and wait, no preemption, circular wait (चारही लागतात)
  • FIFO page replacement Belady’s anomaly दाखवू शकतो (frames जास्त, तरीही faults जास्त)

सोडवलेले उदाहरण

चार processes वेळ 0 ला येतात, त्यांचे burst times P1 = 8, P2 = 4, P3 = 2, P4 = 6 (ms). FCFS आणि SJF खाली सरासरी waiting time काढा.

उकल पाहा
  1. FCFS क्रम P1, P2, P3, P4. Gantt chart: P1 0–8, P2 8–12, P3 12–14, P4 14–20.
  2. सगळे 0 ला येतात, म्हणून waiting time = सुरुवातीची वेळ: 0, 8, 12, 14 → सरासरी = 34 ÷ 4 = 8.5 ms.
  3. Burst नुसार SJF क्रम: P3 (2), P2 (4), P4 (6), P1 (8). Gantt chart: P3 0–2, P2 2–6, P4 6–12, P1 12–20.
  4. SJF waiting times: P1 = 12, P2 = 2, P3 = 0, P4 = 6 → सरासरी = 20 ÷ 4 = 5 ms.

उत्तर: FCFS 8.5 ms; SJF 5 ms

परीक्षेसाठी झटपट युक्ती

सगळे processes वेळ 0 ला येत असतील आणि policy non-preemptive असेल, तर प्रत्येकाचा waiting time म्हणजे Gantt chart मधली त्याची सुरुवातीची वेळ: सुरुवातीच्या वेळांची बेरीज करा आणि भागा. येण्याच्या वेळा वेगवेगळ्या असतील तर प्रत्येकाच्या सुरुवातीच्या वेळेतून त्याची येण्याची वेळ वजा करा.

नेहमीच्या चुका

  • येण्याच्या वेळा वेगवेगळ्या असतील किंवा preemption असेल (Round Robin, SRTF), तर waiting time म्हणजे फक्त सुरुवातीची वेळ नाही; WT = completion − arrival − burst वापरा.
  • येण्याच्या वेळा असलेल्या non-preemptive SJF मध्ये फक्त आधीच आलेले processes निवडता येतात.
  • Deadlock साठी चारही अटी लागतात. “Preemption” ही त्यांपैकी अट नाही — “no preemption” आहे.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. Three processes arrive at time 0 in the order P1, P2, P3 with burst times 5, 3 and 1 ms. Using Round Robin with a time quantum of 2 ms, the average waiting time is:

तीन processes वेळ 0 ला P1, P2, P3 या क्रमाने येतात, त्यांचे burst times 5, 3 आणि 1 ms. 2 ms time quantum असलेला Round Robin वापरला तर सरासरी waiting time किती?

Q2. Processes with (arrival, burst) times P1 (0, 7), P2 (2, 4), P3 (4, 1), P4 (5, 4) are scheduled with non-preemptive SJF. The average waiting time is:

(arrival, burst) वेळा P1 (0, 7), P2 (2, 4), P3 (4, 1), P4 (5, 4) असलेले processes non-preemptive SJF ने schedule केले आहेत. सरासरी waiting time किती?

Q3. Which of the following is NOT one of the four necessary conditions for deadlock?

खालीलपैकी कोणती deadlock साठीच्या चार आवश्यक अटींपैकी एक नाही?

Q4. A system uses 32-bit logical addresses and a page size of 4 KB. How many entries does a single-level page table have?

एक system 32-bit logical addresses आणि 4 KB page size वापरते. Single-level page table मध्ये किती entries असतात?

↑ विषयसूचीकडे परत

संगणक · संगणकाची मूलतत्त्वे · विषय 16 / 16

संगणक जागरूकता: Internet, Email, Web आणि Software

Computer Awareness: Internet, Email, Web and Software

असं समजा…

पुण्यातून गावी लग्नपत्रिका पोस्टाने पाठवणे

चुलत भावाचं लग्न ठरलं आहे आणि तुम्ही पुण्यातून गावच्या नातेवाइकांना पत्रिका पोस्टाने पाठवत आहात. प्रत्येक गाव-शहर जोडणारे रस्ते, रेल्वे आणि ट्रक म्हणजे internet: एकच भौतिक जाळं, जे पत्रं, पार्सलं, प्रवासी आणि दूध सगळं वाहून नेतं. त्यावरून जाणारी पत्रं म्हणजे email; त्या रस्त्यांवरची, तुम्ही भेट देऊ शकता अशी दुकानं आणि कार्यालयं म्हणजे World Wide Web — रस्त्यांच्या अनेक उपयोगांपैकी फक्त एक. पाकिटावर तुम्ही लिहिता Sunil Patil, Mhaswad: व्यक्ती आणि ठिकाण, अगदी email address मधल्या username@domain सारखं. तुमचं पत्र स्वीकारून पुढे पाठवणारं पुण्याचं पोस्ट ऑफिस म्हणजे पाठवणारा mail server (SMTP); सुनील येऊन घेईपर्यंत पत्र सांभाळणारं म्हसवडचं पोस्ट ऑफिस म्हणजे घेणारा server (POP/IMAP). “सुनील पाटील” म्हणजे घर नंबर 42 हे ओळखणारा गावचा पोस्टमन म्हणजे DNS — नावाचं रूपांतर नंबरात (IP address) करणारा. तुम्ही संपूर्ण कुटुंबासाठी जास्तीच्या प्रती छापता (CC), पाकिटात एक फोटो सरकवता (attachment), मित्राला उघडं पोस्टकार्ड पाठवता (HTTP) पण बँकेला सीलबंद रजिस्टर्ड पाकीट (HTTPS). पत्रिका प्रमाण देवनागरीत छापलेली असते, म्हणून कोणत्याही गावातला कोणताही नातेवाईक ती वाचू शकतो — प्रमाण HTML मध्ये लिहिलेलं page कोणत्याही browser मध्ये उघडतं, तसंच.

रोजच्या जीवनातपरीक्षेच्या विषयात
प्रत्येक गाव-शहर जोडणारे रस्ते आणि रेल्वेInternet: जाळ्यांचं भौतिक जाळं (network of networks)
रस्त्यांवरची, तुम्ही भेट देऊ शकता अशी दुकानं आणि कार्यालयंWorld Wide Web: web pages — internet वरची एक सेवा
पाकिटावरचं Sunil Patil, MhaswadEmail address username@domain; दोन्ही बाजूंची पोस्ट ऑफिसं म्हणजे mail servers (SMTP / POP, IMAP)
“सुनील पाटील” म्हणजे कोणतं घर हे ओळखणारा पोस्टमनDNS: domain name → IP address
उघडं पोस्टकार्ड विरुद्ध सीलबंद रजिस्टर्ड पाकीटHTTP विरुद्ध HTTPS (SSL/TLS ने encrypted)

संकल्पना

Internet म्हणजे TCP/IP protocols वापरून संगणक जोडणारं, जगभर पसरलेलं जाळ्यांचं जाळं (network of networks); त्याची सुरुवात ARPANET (1969) पासून झाली. World Wide Web (WWW) ही त्यावर चालणारी फक्त एक सेवा आहे — एकमेकांना जोडलेल्या pages चा (hypertext) संग्रह, जो Tim Berners-Lee यांनी CERN मध्ये 1989 साली शोधला; email, file transfer (FTP) आणि video calls या इतर सेवा. Web page त्याच्या URL (Uniform Resource Locator) ने सापडतं, उदा. https://www.mahacet.org/exams/mca.html: protocol (https), domain name (www.mahacet.org, ज्याचा शेवटचा भाग .org हा top-level domain, जसे .com, .in, .edu, .gov), आणि path व file name (/exams/mca.html). HTTP (HyperText Transfer Protocol, port 80) web server आणि तुमच्या browser (Chrome, Firefox, Edge, Safari) दरम्यान pages वाहून नेतो; HTTPS त्यात SSL/TLS encryption जोडतो (port 443) आणि कुलपाचं चिन्ह दाखवतो. Pages HTML (HyperText Markup Language) मध्ये लिहिली जातात: <p> आणि <a href="…"> अशा tags ची markup भाषा, जी रचना आणि links सांगते — ही programming भाषा नाही. HTML हे प्रत्येक operating system वरचा प्रत्येक browser समजणारं खुलं प्रमाण (open standard) असल्याने, तेच document कुठेही दाखवता येतं — हाच त्याचा मुख्य फायदा. Email (electronic mail) username@domain या रूपाच्या पत्त्यावर संदेश पोहोचवतं, उदा. sunil.patil@gmail.com: @ च्या आधी user name (mailbox) आणि नंतर mail पुरवठादाराचं domain name. SMTP (Simple Mail Transfer Protocol) mail पाठवतो; POP3 (Post Office Protocol) ती एका device वर download करतो; IMAP (Internet Message Access Protocol) ती server वरच ठेवतो, म्हणून फोन आणि laptop दोन्हीकडे तेच दिसतं. CC (carbon copy) मधले लोक सगळ्यांना दिसतात; BCC (blind carbon copy) मधले लपलेले असतात; संदेशासोबत पाठवलेली file म्हणजे attachment; नको असलेली ढीगभर mail म्हणजे spam.

Software चे तीन प्रकार. System software यंत्र स्वतः चालवतं: operating system (Windows, Linux, macOS, Android), device drivers आणि भाषा-रूपांतरक (compiler, interpreter, assembler). Application software वापरकर्त्याचं काम करतं: word processor (MS Word), spreadsheet (Excel), presentation (PowerPoint), browser, WhatsApp, Tally. Utility software system ची देखभाल करतं: antivirus, disk clean-up, file compression (WinRAR, 7-Zip), backup साधनं. ROM मध्ये (BIOS) कायमचं लिहिलेलं software म्हणजे firmware; open-source software (Linux, Firefox) आपला source code सोबत देतं, proprietary software (Windows, MS Office) देत नाही. File चा extension तिचा प्रकार सांगतो: .docx Word, .xlsx Excel, .pptx PowerPoint, .pdf portable document, .txt साधा मजकूर, .jpg/.png/.gif चित्रं, .mp3 ध्वनी, .mp4 video, .zip compressed archive, .exe Windows program, .apk Android app, .html web page, .c C source. Networks ची नावं आकारावरून: PAN (personal, Bluetooth), LAN (Local Area Network — एक इमारत किंवा campus, जसं कॉलेजची lab), MAN (एक शहर) आणि WAN (Wide Area Network — शहरं आणि देश ओलांडून; internet हे सर्वांत मोठं WAN). Network वरच्या प्रत्येक device ला IP address असतो: IPv4 32 bits चा, ठिपक्यांनी वेगळे केलेले 0 ते 255 मधले चार आकडे (192.168.1.1); IPv6 128 bits चा. DNS (Domain Name System) www.google.com अशा नावांचं रूपांतर IP addresses मध्ये करतं — internet ची फोन-डिरेक्टरी. Modem (modulator–demodulator) संगणकाचे digital signals टेलिफोन किंवा cable line च्या analog signals मध्ये आणि उलट रूपांतरित करतो; router data packets एका network मधून दुसऱ्यात पुढे पाठवतो आणि एक connection अनेक devices मध्ये वाटतो; switch किंवा hub LAN च्या आतले devices जोडतो; Wi-Fi (IEEE 802.11) म्हणजे wireless LAN; ISP (Internet Service Provider — Jio, Airtel, BSNL) तुम्हाला internet ला जोडतो. Bandwidth म्हणजे एक link जास्तीत जास्त किती वेगाने data वाहून नेऊ शकते, ते bits per second मध्ये मोजतात (kbps, Mbps, Gbps).

सुरक्षा (security): कोणताही हानिकारक program म्हणजे malware. Virus एखाद्या file ला चिकटतो आणि ती file चालवली की पसरतो; worm network वरून स्वतःहून स्वतःच्या प्रती करतो; Trojan horse उपयोगी दिसणाऱ्या software मध्ये लपतो; spyware माहिती चोरतं आणि ransomware पैशांसाठी तुमच्या files कुलूपबंद करतं. Antivirus software (पुण्याचं Quick Heal, Norton, McAfee, Kaspersky) malware शोधून काढून टाकतं, आणि ते नियमित update करावं लागतं. Firewall (hardware किंवा software) विश्वासू network आणि internet मधली वाहतूक नियमांनुसार गाळतं. Phishing म्हणजे बँक किंवा ओळखीच्या कंपनीचं सोंग घेणारी बनावट email, SMS किंवा website, जी passwords, OTP आणि card नंबर “गळाला लावायला” (fish) बघते; बँक हे कधीच मागत नाही. Strong password लांब असतो (कमीत कमी 8–12 अक्षरं), त्यात मोठी व लहान अक्षरं, आकडे आणि चिन्हं मिसळलेली असतात, तो नाव किंवा जन्मतारीख नसतो, आणि त्याला two-factor authentication (OTP) ची जोड असते. Encryption data अशी गुंतागुंतीची करतं की फक्त key असलेल्यालाच ती वाचता येते. आकार आणि क्षमतेनुसार संगणकाचे प्रकार, सर्वांत लहान आधी: microcomputer (एक microprocessor — desktop, laptop/notebook, tablet, smartphone), minicomputer (मध्यम आकार, एका विभागातले अनेक वापरकर्ते), mainframe (एकाच वेळी हजारो वापरकर्ते — बँका, रेल्वे आरक्षण) आणि supercomputer (सर्वांत वेगवान, वेग FLOPS मध्ये — हवामान अंदाज, संशोधन; भारताचा PARAM 8000 C-DAC पुणे यांनी 1991 मध्ये बनवला). वापरलेल्या signals नुसार संगणक analog, digital किंवा hybrid असतात. पिढ्या (generations) त्यांच्या switching तंत्रज्ञानावरून ओळखल्या जातात: पहिली (सुमारे 1940–56) vacuum tubes, machine language, punched cards (ENIAC, UNIVAC); दुसरी (1956–63) transistors, assembly language आणि सुरुवातीच्या high-level भाषा (FORTRAN, COBOL); तिसरी (1964–71) integrated circuits, keyboards, monitors आणि operating systems (IBM 360); चौथी (1971 पासून) VLSI असलेले microprocessors (Intel 4004), personal computers, GUI आणि networks; पाचवी (आज आणि पुढे) ULSI, parallel processing आणि कृत्रिम बुद्धिमत्ता (artificial intelligence).

महत्त्वाचे मुद्दे व सूत्रे

  • Internet = जाळ्यांचं जाळं (TCP/IP); WWW = त्यावरची web pages, Tim Berners-Lee (1989) यांचा शोध; email आणि FTP या internet च्या इतर सेवा
  • URL = protocol://domain/path, उदा. https://www.mahacet.org/exams/mca.html; HTTP port 80, HTTPS = HTTP + SSL/TLS, port 443
  • HTML ही tags ची markup भाषा आहे, programming भाषा नाही; कोणत्याही OS वरचा कोणताही browser HTML page दाखवू शकतो
  • Email address = user name @ domain name; SMTP पाठवतो, POP3 एका device वर download करतो, IMAP mail server वर ठेवतो; CC दिसतं, BCC लपलेलं
  • Software: system (OS, drivers, translators) · application (Word, Excel, browser) · utility (antivirus, compression, backup); firmware ROM मध्ये असतं
  • PAN < LAN < MAN < WAN; IPv4 = 32 bits (0–255 मधले चार आकडे), IPv6 = 128 bits; DNS: नाव → IP; modem: digital ↔ analog; router: networks जोडतो
  • Virus ला host file लागते, worm स्वतःहून पसरतो, Trojan उपयोगी दिसणाऱ्या software मध्ये लपतो; firewall वाहतूक गाळतं; phishing = passwords/OTP साठी गळ टाकणारा बनावट संदेश
  • आकाराचा क्रम micro < mini < mainframe < super; पिढ्या: vacuum tube → transistor → IC → microprocessor (VLSI) → AI (ULSI)

सोडवलेले उदाहरण

URL https://www.mahacet.org/exams/mca.html आणि email address sunil.patil@gmail.com यांचे भाग वेगळे करा, आणि सुनीलच्या laptop ने पाठवलेली mail नंतर त्याचा फोन वाचतो तेव्हा प्रत्येक पायरीला कोणता protocol वापरला जातो ते सांगा.

उकल पाहा
  1. URL: https हा protocol (secure HTTP, port 443); www.mahacet.org हे domain name — www host/sub-domain, mahacet संस्था, .org top-level domain; /exams/mca.html हा mca.html या file चा path, आणि ती एक HTML page आहे.
  2. Browser DNS ला www.mahacet.org चा IP address विचारतो, त्या server ला जोडतो, HTTPS वरून mca.html आणतो आणि HTML tags चं page मध्ये रूपांतर करून दाखवतो.
  3. Email: sunil.patil हे user name (mailbox) आणि gmail.com हे mail पुरवठादाराचं domain name; @ (“at”) त्यांना वेगळं करतो.
  4. पाठवणे: laptop वरचा mail program संदेश SMTP ने Gmail च्या server कडे देतो, आणि SMTP च तो पुढे घेणाऱ्याच्या server पर्यंत नेतो. वाचणे: फोन ती IMAP ने आणतो (mail server वरच राहते, म्हणून दोन्ही devices वर दिसते) — किंवा POP3 ने, ज्याने ती फक्त एका device वर download झाली असती.

उत्तर: URL = protocol + domain (host · संस्था · TLD) + path/file; email = user name @ domain name; पाठवायला SMTP, घ्यायला IMAP किंवा POP3.

परीक्षेसाठी झटपट युक्ती

URL डावीकडून उजवीकडे वाचा — कसं (protocol) → कुठे (domain; त्याचा शेवटचा तुकडा top-level domain) → काय (path/file). Email address @ च्या दोन्ही बाजूंनी वाचा: डावीकडे व्यक्ती, उजवीकडे पोस्ट ऑफिस (domain). “कोणता protocol” प्रश्नांसाठी: SMTP मधला S = Send (पाठवणे); POP आणि IMAP = Pick up (घेणे); HTTP = pages; FTP = files.

नेहमीच्या चुका

  • Internet आणि World Wide Web एकच नाहीत: internet म्हणजे जाळं; web ही त्यावरची एक सेवा (email ही दुसरी). “Internet चा शोध कोणी लावला?” याचं उत्तर Tim Berners-Lee नाही — त्यांनी web शोधलं.
  • HTML ही programming भाषा नाही आणि browser ती “चालवत” नाही; ती मजकुराला tags लावते, जो कोणताही browser दाखवू शकतो. तसंच HTTP हा protocol आहे, भाषा नाही.
  • Notebook/laptop हा microcomputer चाच एक प्रकार आहे, वेगळा वर्ग नाही; म्हणून micro-, mini- आणि supercomputer सोबतच्या odd-one-out मध्ये तोच वेगळा ठरतो. आणि modem ≠ router: modem ISP च्या line शी बोलतो, router connection वाटतो — घरातला “Wi-Fi box” दोन्ही एकत्र करतो, इतकंच.

सराव · प्रश्न परीक्षेप्रमाणे इंग्रजीत, खाली मराठी अर्थ · उत्तर तपासण्यासाठी पर्याय निवडा

Q1. An email address such as sunil.patil@rediffmail.com is made up of which two parts, separated by the @ sign?

sunil.patil@rediffmail.com असा email address @ चिन्हाने वेगळे केलेल्या कोणत्या दोन भागांचा बनलेला असतो?

Q2. Which of the following is an advantage of writing a web page in HTML?

खालीलपैकी कोणता web page HTML मध्ये लिहिण्याचा फायदा आहे?

Q3. Find the odd one out.

वेगळा पर्याय ओळखा.

Q4. Which protocol is used to send an email from the sender’s mail program to the mail server?

पाठवणाऱ्याच्या mail program पासून mail server कडे email पाठवायला कोणता protocol वापरला जातो?

↑ विषयसूचीकडे परत