After a semaphore is initialized, we can call one of two functions to interact with it.

একটি সেমাফোর আরম্ভ করার পরে, আমরা এটির সাথে ইন্টারঅ্যাক্ট করার জন্য দুটি ফাংশনের মধ্যে একটি কল করতে পারি।


First, we can see that sem_wait() will either return right away.

প্রথমত, আমরা দেখতে পাচ্ছি যে sem_wait() হয় সঙ্গে সঙ্গে ফিরে আসবে।


আমরা এখন একটি সেমাফোর ব্যবহার করতে প্রস্তুত।


Critical to making this work, though, is the initial value of the semaphore m.

এটি কাজ করার জন্য গুরুত্বপূর্ণ, তবে, সেমাফোর m-এর প্রাথমিক মান।


Because locks only have two states (held and not held), this usage is sometimes known as a binary semaphore.

যেহেতু লকের শুধুমাত্র দুটি অবস্থা রয়েছে (ধৃত এবং ধৃত নয়), তাই এই ব্যবহারকে কখনও কখনও বাইনারি সেমাফোর হিসাবেও পরিচিত।


Semaphores are also useful when a thread wants to halt its progress waiting for a condition to become true.

যখন একটি থ্রেড কোনো শর্ত সত্য হওয়ার জন্য অপেক্ষা করে তার অগ্রগতি বন্ধ করতে চায় তখনও সেমাফোর উপযোগী।


Imagine a thread creates another thread and then wants to wait for it to complete its execution.

কল্পনা করুন একটি থ্রেড অন্য একটি থ্রেড তৈরি করে এবং তারপর এটির কার্যকর হওয়া পর্যন্ত অপেক্ষা করতে চায়।


The question, then, is how to use a semaphore to achieve this effect, and is it turns out, it is relatively easy to understand.

প্রশ্ন হল, কিভাবে এই প্রভাব অর্জনের জন্য একটি সেমাফোর ব্যবহার করা যায়, এবং দেখা যাচ্ছে, এটি বোঝা তুলনামূলকভাবে সহজ।


The consumer waits for a buffer to become filled before using it.

ভোক্তা ব্যবহারের আগে বাফারটি পূরণ হওয়ার জন্য অপেক্ষা করে।


Imagine there are two threads, a producer and a consumer.

কল্পনা করুন সেখানে দুটি থ্রেড আছে, একটি প্রযোজক এবং একটি ভোক্তা।


The producer will put a data value into the first entry of buffer.

প্রযোজক বাফারের প্রথম এন্ট্রিতে একটি ডেটা মান রাখবে।


This is a no-no; we don’t want any data from the producer to be lost.

এটা একদমই উচিত নয়; আমরা প্রস্তুতকারকের কাছ থেকে কোনো ডেটা হারাতে চাই না।


The consumer acquires the mutex and then calls sem wait() on the full semaphore.

ভোক্তা মিউটেক্স অর্জন করে এবং তারপরে ফুল সেমাফোরের উপর সেম ওয়েট() কল করে।


The producer and consumer are each stuck waiting for each other: a classic deadlock.

প্রযোজক এবং ভোক্তা উভয়ই একে অপরের জন্য অপেক্ষা করতে আটকে আছে: একটি ক্লাসিক অচলাবস্থা।


To solve this problem, we simply must reduce the scope of the lock.

এই সমস্যা সমাধানের জন্য, আমাদের কেবল লকটির সুযোগ কমাতে হবে।


Understand it now; use it later. You will thank us for years to come.

এখন বুঝুন; পরে ব্যবহার করুন। আপনি আমাদের আগামী বছরগুলিতে ধন্যবাদ জানাবেন।


More interesting is the pair of routines to acquire and release read locks.

আরও আকর্ষণীয় হল রিড লকগুলি অর্জন এবং মুক্তি দেওয়ার জন্য রুটিনের জোড়া।


They often add more overhead and thus do not end up speeding up performance.

এগুলি প্রায়শই আরও ওভারহেড যোগ করে এবং এইভাবে কর্মক্ষমতা বাড়াতে শেষ হয় না।


The basic setup for the problem is this: assume there are five philosophers sitting around a table.

সমস্যার মূল সেটআপটি হল: ধরুন একটি টেবিলে পাঁচজন দার্শনিক বসে আছেন।


In order to eat, a philosopher needs two forks, both the one on their left and the one on their right.

খেতে হলে, একজন দার্শনিকের দুটি কাঁটাচামচ দরকার, বাম দিকের এবং ডান দিকের উভয়ই।


The key challenge, then, is to write the routines getforks() and putforks() such that there is no deadlock.

মূল চ্যালেঞ্জ হল getforks() এবং putforks() রুটিনগুলি এমনভাবে লেখা যাতে কোনো অচলাবস্থা না থাকে।


If each philosopher happens to grab the fork on their left before any philosopher can grab the fork on their right, each will be stuck.

যদি প্রতিটি দার্শনিক তাদের বাম দিকের কাঁটাচামচটি ধরে ফেলে, অন্য কোনো দার্শনিক তাদের ডান দিকের কাঁটাচামচটি ধরার আগে, তবে প্রত্যেকে আটকে যাবে।


The simplest way to attack this problem is to change how forks are acquired.

এই সমস্যার মোকাবিলা করার সবচেয়ে সহজ উপায় হল কীভাবে কাঁটাচামচগুলি অর্জন করা হয় তা পরিবর্তন করা।


Because the last philosopher tries to grab right before left, there is no situation where each philosopher grabs one fork.

কারণ শেষ দার্শনিক বামের আগে ডান ধরার চেষ্টা করে, এমন কোনো পরিস্থিতি নেই যেখানে প্রতিটি দার্শনিক একটি কাঁটাচামচ ধরে।


Study the code for yourself until you really understand it.

আপনি সত্যিই এটি না বোঝা পর্যন্ত নিজের জন্য কোডটি অধ্যয়ন করুন।


Semaphores are a powerful and flexible primitive for writing concurrent programs.

সিম্যাফোরগুলি সমকালীন প্রোগ্রাম লেখার জন্য একটি শক্তিশালী এবং নমনীয় আদিম।


One great (and free reference) is Allen Downey’s book on concurrency and programming with semaphores.

একটি দুর্দান্ত (এবং বিনামূল্যে) রেফারেন্স হল অ্যালেন ডাউনির সেমাফোর সহ সমকালীনতা এবং প্রোগ্রামিং সম্পর্কিত বই।


Becoming a real concurrency expert takes years of effort.

প্রকৃত সমকালীনতা বিশেষজ্ঞ হতে বছরের পর বছর প্রচেষ্টা লাগে।


The study focuses on four major and important open-source applications.

গবেষণাটি চারটি প্রধান এবং গুরুত্বপূর্ণ ওপেন সোর্স অ্যাপ্লিকেশনগুলির উপর দৃষ্টি নিবদ্ধ করে।


Understanding these results can help you understand what types of problems actually occur in mature code bases.

এই ফলাফলগুলি বোঝা আপনাকে বুঝতে সাহায্য করতে পারে যে পরিপক্ক কোড বেসে আসলে কী ধরনের সমস্যা দেখা দেয়।


Table 32.1 shows a summary of the bugs Lu and colleagues studied.

সারণী 32.1 লু এবং তার সহকর্মীদের দ্বারা অধ্যয়ন করা বাগগুলির একটি সারসংক্ষেপ দেখায়।


From the table, you can see that there were 105 total bugs, most of which were not deadlock.

সারণী থেকে, আপনি দেখতে পাচ্ছেন যে মোট 105 টি বাগ ছিল, যার বেশিরভাগই ডেডলক ছিল না।


We now dive into these different classes of bugs a bit more deeply.

আমরা এখন এই বিভিন্ন শ্রেণীর বাগগুলির গভীরে প্রবেশ করব।


Non-deadlock bugs make up a majority of concurrency bugs.

নন-ডেডলক বাগগুলি সমকালীনতা বাগের একটি বৃহৎ অংশ তৈরি করে।


এগুলি কিভাবে সৃষ্টি হয়?


We now discuss the two major types of non-deadlock bugs.

আমরা এখন নন-ডেডলক বাগের দুটি প্রধান প্রকার নিয়ে আলোচনা করব।


The first type of problem encountered is referred to as an atomicity violation.

প্রথম ধরনের সমস্যাটিকে অ্যাটমিসিটি ভায়োলেশন হিসাবে উল্লেখ করা হয়।


Here is a simple example, found in MySQL.

এখানে একটি সাধারণ উদাহরণ দেওয়া হল, যা MySQL-এ পাওয়া গেছে।


Can you think of how to fix the code above?

উপরের কোডটি কিভাবে ঠিক করা যায়, তা কি আপনি চিন্তা করতে পারেন?


Another common type of non-deadlock bug found by Lu et al. is known as an order violation.

লু এবং অন্যান্যদের দ্বারা আবিষ্কৃত নন-ডেডলক বাগের আরেকটি সাধারণ প্রকার হল অর্ডার ভায়োলেশন।


As you probably figured out, the code in Thread 2 seems to assume that the variable mThread has already been initialized.

আপনি সম্ভবত বুঝতে পেরেছেন, থ্রেড 2-এর কোডটি ধরে নেয় যে mThread ভেরিয়েবলটি ইতিমধ্যে আরম্ভ করা হয়েছে।


The fix to this type of bug is generally to enforce ordering.

এই ধরনের বাগের সমাধান সাধারণত ক্রম বজায় রাখা।


When ordering matters between threads, condition variables (or semaphores) can come to the rescue.

যখন থ্রেডগুলির মধ্যে ক্রম গুরুত্বপূর্ণ, তখন শর্তের ভেরিয়েবল (বা সেমাফোর) উদ্ধার করতে পারে।


A large fraction (97%) of non-deadlock bugs studied by Lu et al. are either atomicity or order violations.

লু এবং অন্যান্যদের দ্বারা অধ্যয়ন করা নন-ডেডলক বাগের একটি বৃহৎ অংশ (97%) হয় অ্যাটমিসিটি বা অর্ডার ভায়োলেশন।


Beyond the concurrency bugs mentioned above, a classic problem that arises in many concurrent systems with complex locking protocols is known as deadlock.

উপরের সমকালীনতা বাগগুলির বাইরে, জটিল লকিং প্রোটোকল সহ অনেক সমকালীন সিস্টেমে উদ্ভূত একটি ক্লাসিক সমস্যা হল ডেডলক।


Deadlock occurs, for example, when a thread (say Thread 1) is holding a lock (L1) and waiting for another one (L2).

উদাহরণস্বরূপ, ডেডলক ঘটে যখন একটি থ্রেড (ধরুন থ্রেড 1) একটি লক (L1) ধরে রাখে এবং অন্যটির (L2) জন্য অপেক্ষা করে।


How should we build systems to prevent, avoid, or at least detect and recover from deadlock?

ডেডলক প্রতিরোধ, এড়ানো, বা অন্তত সনাক্তকরণ এবং পুনরুদ্ধার করার জন্য আমাদের কীভাবে সিস্টেম তৈরি করা উচিত?


One reason is that in large code bases, complex dependencies arise between components.

এর একটি কারণ হল বৃহৎ কোড বেসে, উপাদানগুলির মধ্যে জটিল নির্ভরশীলতা তৈরি হয়।


বইটি টেবিলের উপর আছে।


আজ আপনার কেমন লাগছে?


আবহাওয়া খুব মনোরম।


দয়া করে নুনটা দেবেন।


আমি বাজারে যাচ্ছি।


কোম্পানিটি একটি নতুন পণ্য ঘোষণা করেছে।


The government is discussing new policies.

সরকার নতুন নীতি নিয়ে আলোচনা করছে।


তিনি একজন অত্যন্ত প্রতিভাবান সঙ্গীতশিল্পী।


The research team made a significant discovery.

গবেষণা দল একটি গুরুত্বপূর্ণ আবিষ্কার করেছে।


সে তার পরীক্ষার জন্য পড়াশোনা করছে।


The algorithm efficiently sorts the data.

অ্যালগরিদমটি দক্ষতার সাথে ডেটা সাজায়।


The economic forecast predicts a recession.

অর্থনৈতিক পূর্বাভাসে মন্দা দেখা যাচ্ছে।


The complex system requires careful analysis.

জটিল সিস্টেমটির জন্য সতর্ক বিশ্লেষণ প্রয়োজন।


The philosophical debate explored existentialism.

দার্শনিক বিতর্কে অস্তিত্ববাদ নিয়ে আলোচনা করা হয়েছিল।


The implications of the treaty are far-reaching.

চুক্তির প্রভাব সুদূরপ্রসারী।


The software update improved system performance.

সফ্টওয়্যার আপডেটের ফলে সিস্টেমের কর্মক্ষমতা উন্নত হয়েছে।


Despite the challenges, they persevered.

চ্যালেঞ্জ সত্ত্বেও, তারা অধ্যবসায় চালিয়ে গিয়েছিল।


The company's innovative approach revolutionized the industry.

কোম্পানির উদ্ভাবনী পদ্ধতির কারণে শিল্পে বিপ্লব ঘটেছে।


The scientific community is investigating the phenomenon.

বৈজ্ঞানিক সম্প্রদায় এই ঘটনাটি তদন্ত করছে।


The artist's work reflects a deep understanding of human emotion.

শিল্পীর কাজ মানুষের অনুভূতির গভীর উপলব্ধি প্রতিফলিত করে।


A pioneering paper on how to structure web servers in the then-burgeoning Internet era.

সেই সময়ের দ্রুত বর্ধনশীল ইন্টারনেট যুগে ওয়েব সার্ভারগুলি কীভাবে গঠন করা যায় তার উপর একটি অগ্রণী গবেষণাপত্র।


If there is some detail you need to know, it is in here.

যদি আপনার জানার মতো কোনো বিস্তারিত বিষয় থাকে, তবে তা এখানে আছে।


A paper about how to make threads work at extreme scale; a counter to all the event-based work ongoing at the time.

চরম স্কেলে থ্রেডগুলি কীভাবে কাজ করে সে সম্পর্কে একটি গবেষণাপত্র; সেই সময়ে চলমান সমস্ত ইভেন্ট-ভিত্তিক কাজের প্রতিপক্ষ।


A nice twist on event-based serving that combines threads, queues, and event-based handling into one streamlined whole.

ইভেন্ট-ভিত্তিক সার্ভিংয়ের একটি চমৎকার মোড়, যা থ্রেড, সারি এবং ইভেন্ট-ভিত্তিক হ্যান্ডলিংকে একত্রিত করে একটি সুসংহত কাঠামো তৈরি করে।


Some of these ideas have found their way into the infrastructures of companies such as Google, Amazon, and elsewhere.

এই ধারণাগুলির কিছু গুগল, অ্যামাজন এবং অন্যান্য জায়গার মতো সংস্থাগুলির অবকাঠামোতে স্থান করে নিয়েছে।


তাহলে, এখন কি তোমার মাথা ধরেছে?


It’s hard to think about all the ways threads can interleave.

থ্রেডগুলি কীভাবে একত্রিত হতে পারে সে সম্পর্কে চিন্তা করা কঠিন।


Indeed it is. I am always amazed at how so few line of code, when concurrent execution is involved, can become nearly impossible to understand.

আসলে তাই। আমি সবসময় বিস্মিত হই যে কীভাবে খুব কম লাইনের কোড, যখন সমকালীন এক্সিকিউশন জড়িত থাকে, তখন বোঝা প্রায় অসম্ভব হয়ে পড়ে।


Oh, don’t feel too badly. If you look through the first papers on con- current algorithms, they are sometimes wrong!

আরে, খুব খারাপ অনুভব করবেন না। আপনি যদি সমকালীন অ্যালগরিদমের প্রথম কাগজগুলি দেখেন তবে সেগুলি মাঝে মাঝে ভুল!


অধ্যাপকরা ভুল করতে পারেন?


Well that is the real question, isn’t it?

আচ্ছা, আসল প্রশ্ন তো এটাই, তাই না?


প্রথমত, এটিকে সহজ রাখুন!


Avoid complex interactions between threads, and use well-known and tried-and-true ways to manage thread interactions.

থ্রেডগুলির মধ্যে জটিল মিথস্ক্রিয়াগুলি এড়িয়ে চলুন এবং থ্রেড ইন্টারঅ্যাকশনগুলি পরিচালনা করার জন্য সুপরিচিত এবং পরীক্ষিত উপায়গুলি ব্যবহার করুন।


Like simple locking, and maybe a producer-consumer queue?

যেমন সাধারণ লকিং, এবং সম্ভবত একটি প্রযোজক-ভোক্তা সারি?


Second, only use con- currency when absolutely needed; avoid it if at all possible.

দ্বিতীয়ত, একেবারে প্রয়োজন হলেই কেবল সমকালীনতা ব্যবহার করুন; সম্ভব হলে এটি এড়িয়ে চলুন।


There is nothing worse than premature optimization of a program.

একটি প্রোগ্রামের অকাল অপটিমাইজেশনের চেয়ে খারাপ আর কিছু নেই।


I see – why add threads if you don’t need them?

আমি বুঝতে পারছি - যদি প্রয়োজন না হয় তবে থ্রেড যোগ করার দরকার কি?


Third, if you really need parallelism, seek it in other sim- plified forms.

তৃতীয়ত, যদি আপনার সত্যিই সমান্তরালতার প্রয়োজন হয় তবে অন্যান্য সরলীকৃত আকারে এটি সন্ধান করুন।


Read, read, and read some more! And then try things out, write some code, and then write some more too.

পড়ুন, পড়ুন, এবং আরও পড়ুন! এবং তারপরে জিনিসগুলি চেষ্টা করুন, কিছু কোড লিখুন এবং তারপরে আরও কিছু লিখুন।


And thus we reach the third of our four ... err... three pillars of operating systems:persistence.

এবং এইভাবে আমরা আমাদের চারটি...এহ...অপারেটিং সিস্টেমের তিনটি স্তম্ভে পৌঁছেছি: ধারাবাহিকতা।


ঠিকানা 0x1F3 = LBA-এর নিম্ন বাইট


কমান্ড রেজিস্টারে প্যারামিটার লিখুন।


বিরামচিহ্নগুলি পরিচালনা করুন।


The basic protocol to interact with the device is as follows.

ডিভাইসের সাথে ইন্টারঅ্যাক্ট করার মৌলিক প্রোটোকলটি নিম্নরূপ।


After each operation, read the status register.

প্রতিটি অপারেশনের পরে, স্ট্যাটাস রেজিস্টারটি পড়ুন।


Most of this protocol is found in the xv6 IDE driver.

এই প্রোটোকলের বেশিরভাগ অংশ xv6 IDE ড্রাইভারে পাওয়া যায়।


The first iside rw(), which queues a request.

প্রথমটি হল ide rw(), যা একটি অনুরোধ সারিবদ্ধ করে।


The start request routine uses the third function, ide waitready().

স্টার্ট রিকোয়েস্ট রুটিনটি তৃতীয় ফাংশন, ide waitready() ব্যবহার করে।


Interrupts are an ancient idea, existing on the earliest of machines.

বিরামচিহ্নগুলি একটি প্রাচীন ধারণা, যা প্রাচীনতম মেশিনগুলিতে বিদ্যমান।


The drive consists of a large number of sectors.

ড্রাইভটিতে প্রচুর সংখ্যক সেক্টর রয়েছে।


The sectors are numbered from 0 to n-1 on a disk with n sectors.

n সেক্টর সহ একটি ডিস্কে সেক্টরগুলি 0 থেকে n-1 পর্যন্ত সংখ্যাযুক্ত।


মাল্টি-সেক্টর অপারেশন সম্ভব।


One can also usually assume that accessing blocks in a contiguous chunk is the fastest access mode.

এছাড়াও সাধারণত ধরে নেওয়া যায় যে একটি অবিচ্ছিন্ন অংশে ব্লকগুলি অ্যাক্সেস করা দ্রুততম অ্যাক্সেস মোড।


একটি ডিস্কে এক বা একাধিক প্লেটার থাকতে পারে।


The platters are all bound together around the spindle.

প্লেটারগুলি সবই স্পিন্ডেলের চারপাশে আবদ্ধ থাকে।


The rate of rotation is often measured in rotations per minute (RPM).

ঘূর্ণনের হার প্রায়শই প্রতি মিনিটে ঘূর্ণন (RPM) এ পরিমাপ করা হয়।


Data is encoded on each surface in concentric circles of sectors.

ডেটা প্রতিটি পৃষ্ঠে সেক্টরের কেন্দ্রিক বৃত্তগুলিতে এনকোড করা হয়।


To read and write from the surface, we need a disk head.

পৃষ্ঠ থেকে পড়তে এবং লিখতে, আমাদের একটি ডিস্ক হেড দরকার।


Assume we have a simple disk with a single track.

ধরুন আমাদের একটি একক ট্র্যাক সহ একটি সাধারণ ডিস্ক আছে।


In the figure, the disk head is positioned over sector 6.

চিত্রে, ডিস্ক হেড সেক্টর 6 এর উপরে স্থাপন করা হয়েছে।


The Cheetah 15K.5 is a high-performance SCSI drive.

চিটা ১৫কে.৫ একটি উচ্চ-ক্ষমতা সম্পন্ন এসসিএসআই ড্রাইভ।


The Barracuda is a drive built for capacity.

বারাকুডা হলো ধারণক্ষমতার জন্য তৈরি একটি ড্রাইভ।


Details on both are found in Table 37.1.

উভয়ের বিস্তারিত বিবরণ সারণী ৩৭.১-এ পাওয়া যাবে।


The drives have quite different characteristics.

ড্রাইভগুলির বেশ ভিন্ন বৈশিষ্ট্য রয়েছে।


The first is the “high performance” drive market.

প্রথমটি হলো “উচ্চ কর্মক্ষমতা” সম্পন্ন ড্রাইভের বাজার।


দ্বিতীয়টি হলো “ধারণক্ষমতা” সম্পন্ন বাজার।


Cost per byte is the most important aspect.

প্রতি বাইটের খরচ সবচেয়ে গুরুত্বপূর্ণ দিক।


The drives are slower but pack as many bits as possible.

ড্রাইভগুলি ধীর গতির, তবে তারা যত বেশি সম্ভব বিট জমা করে।


Let’s start by looking at the random workload.

আসুন, এলোমেলো কাজের চাপ দেখে শুরু করা যাক।


Assuming each 4 KB read occurs at a random location on disk.

ধরা যাক, প্রতিটি ৪ কিলোবাইট পাঠ ডিস্কের একটি এলোমেলো স্থানে ঘটে।


We can calculate how long each such read would take.

আমরা গণনা করতে পারি যে এই ধরনের প্রতিটি পাঠ কত সময় নেবে।


The average seek time is just taken as the average time reported by the manufacturer.

গড় অনুসন্ধান সময় প্রস্তুতকারকের দ্বারা রিপোর্ট করা গড় সময় হিসাবে ধরা হয়।


The average rotational delay is calculated from the RPM directly.

গড় ঘূর্ণন বিলম্ব সরাসরি RPM থেকে গণনা করা হয়।


Finally, the transfer time is just the size of the transfer over the peak transfer rate.

পরিশেষে, স্থানান্তর সময় হলো সর্বোচ্চ স্থানান্তর হারের উপরে স্থানান্তরের আকার।


To compute the rate of I/O, we just divide the size of the transfer by the average time.

I/O এর হার গণনা করতে, আমরা স্থানান্তরের আকারকে গড় সময় দ্বারা ভাগ করি।


Here we can assume there is a single seek and rotation before a very long transfer.

এখানে আমরা ধরে নিতে পারি যে একটি দীর্ঘ স্থানান্তরের আগে একটি একক অনুসন্ধান এবং ঘূর্ণন ঘটে।


The table shows us a number of important things.

সারণীটি আমাদের বেশ কয়েকটি গুরুত্বপূর্ণ বিষয় দেখায়।


There is a huge gap in drive performance between random and sequential workloads.

এলোমেলো এবং ধারাবাহিক কাজের চাপের মধ্যে ড্রাইভের কর্মক্ষমতার একটি বিশাল ব্যবধান রয়েছে।


For this reason (and others), people are often willing to pay top dollar for the former.

এই কারণে (এবং অন্যান্য কারণে), লোকেরা প্রায়শই আগেরটির জন্য উচ্চ মূল্য দিতে রাজি থাকে।


Imagine the disk as a set of tracks, from 0 to N.

ডিস্কটিকে 0 থেকে N পর্যন্ত ট্র্যাকের একটি সেট হিসাবে কল্পনা করুন।


RAID systems can tolerate the loss of a disk and keep operating.

RAID সিস্টেমগুলি একটি ডিস্কের ক্ষতি সহ্য করতে পারে এবং কাজ চালিয়ে যেতে পারে।


Administrators could install a SCSI-based RAID storage array instead of a SCSI disk.

প্রশাসকরা একটি SCSI ডিস্কের পরিবর্তে একটি SCSI-ভিত্তিক RAID স্টোরেজ অ্যারে ইনস্টল করতে পারতেন।


RAID was made more successful from day one by solving the problem of deployment.

স্থাপনার সমস্যা সমাধানের মাধ্যমে RAID প্রথম দিন থেকেই আরও সফল হয়েছিল।


A RAID just looks like a big disk to the host system.

একটি RAID হোস্ট সিস্টেমের কাছে একটি বড় ডিস্কের মতো দেখায়।


Transparency greatly improves the deployability of RAID.

স্বচ্ছতা RAID-এর স্থাপনাযোগ্যতা ব্যাপকভাবে উন্নত করে।


We now discuss some of the important aspects of RAIDs.

আমরা এখন RAID-এর কিছু গুরুত্বপূর্ণ দিক নিয়ে আলোচনা করব।


To a file system above, a RAID looks like a big, fast, and reliable disk.

উপরের একটি ফাইল সিস্টেমের কাছে, একটি RAID একটি বড়, দ্রুত এবং নির্ভরযোগ্য ডিস্কের মতো দেখায়।


The exact nature of these physical I/Os depends on the RAID level.

এই ভৌত I/O-গুলির সঠিক প্রকৃতি RAID স্তরের উপর নির্ভর করে।


Consider a RAID that keeps two copies of each block.

এমন একটি RAID বিবেচনা করুন যা প্রতিটি ব্লকের দুটি অনুলিপি রাখে।


A RAID system is often built as a separate hardware box.

একটি RAID সিস্টেম প্রায়শই একটি পৃথক হার্ডওয়্যার বাক্স হিসাবে তৈরি করা হয়।


RAIDগুলি অভ্যন্তরীণভাবে বেশ জটিল।


RAIDs are designed to detect and recover from certain kinds of disk faults.

RAIDগুলি নির্দিষ্ট ধরণের ডিস্ক ত্রুটি সনাক্ত এবং পুনরুদ্ধার করার জন্য ডিজাইন করা হয়েছে।


In this model, a disk can be in exactly one of two states: working or failed.

এই মডেলে, একটি ডিস্ক হয় কাজ করবে অথবা ব্যর্থ হবে, এই দুটি অবস্থার মধ্যে যেকোনো একটিতে থাকতে পারে।


We assume that this is easily detected when a disk has failed.

আমরা ধরে নিই যে একটি ডিস্ক ব্যর্থ হলে এটি সহজেই সনাক্ত করা যায়।


Each of these approaches has different characteristics which are worth evaluating.

এই পদ্ধতিগুলির প্রত্যেকটির আলাদা বৈশিষ্ট্য রয়েছে যা মূল্যায়ন করার মতো।


The first axis is capacity; given a set of N disks, how much useful capacity is available?

প্রথম অক্ষটি হল ক্ষমতা; N সংখ্যক ডিস্কের একটি সেট দেওয়া হলে, কতটুকু কার্যকর ক্ষমতা উপলব্ধ?


Performance is somewhat challenging to evaluate, because it depends heavily on the workload.

কর্মক্ষমতা মূল্যায়ন করা কিছুটা কঠিন, কারণ এটি কাজের চাপের উপর নির্ভরশীল।


We now consider three important RAID designs: RAID Level 0, RAID Level 1, and RAID Levels 4/5.

আমরা এখন তিনটি গুরুত্বপূর্ণ RAID ডিজাইন বিবেচনা করব: RAID স্তর 0, RAID স্তর 1, এবং RAID স্তর 4/5।


RAID level 0, or striping as it is better known, serves as an excellent upper-bound on performance.

RAID স্তর 0, বা স্ট্রাইপিং, যেমনটি আরও পরিচিত, কর্মক্ষমতার একটি চমৎকার ঊর্ধ্ব সীমা হিসাবে কাজ করে।


This approach is designed to extract the most parallelism from the array.

এই পদ্ধতিটি অ্যারে থেকে সর্বাধিক সমান্তরালতা বের করার জন্য ডিজাইন করা হয়েছে।


I want to call stat() on each file to get more information.

আমি প্রতিটি ফাইলের উপর stat() কল করতে চাই যাতে আরও তথ্য পাওয়া যায়।


This is exactly what ls does when you pass it the -l flag.

আপনি যখন -l ফ্ল্যাগটি পাস করেন, তখন ls-এর কাজ ঠিক এমনই হয়।


You can delete a directory with a call to rmdir().

আপনি rmdir() কল করে একটি ডিরেক্টরি মুছে ফেলতে পারেন।


Removing directories is more dangerous, as you could potentially delete a large amount of data.

ডিরেক্টরি সরানো আরও বিপজ্জনক, কারণ আপনি সম্ভবত প্রচুর ডেটা মুছে ফেলতে পারেন।


The rmdir() has the requirement that the directory be empty before it is deleted.

rmdir()-এর প্রয়োজন যে ডিরেক্টরি মুছে ফেলার আগে খালি থাকতে হবে।


If you try to delete a non-empty directory, the call to rmdir() will simply fail.

আপনি যদি একটি খালি নয় এমন ডিরেক্টরি মুছে ফেলার চেষ্টা করেন তবে rmdir() কলটি ব্যর্থ হবে।


We now come back to the mystery of why removing a file is performed via unlink().

আমরা এখন সেই রহস্যের দিকে ফিরে আসি যে কেন unlink() এর মাধ্যমে একটি ফাইল সরানো হয়।


The link() system call takes two arguments, an old pathname and a new one.

link() সিস্টেম কল দুটি আর্গুমেন্ট নেয়, একটি পুরনো পাথনাম এবং একটি নতুন পাথনাম।


When you link a new file name to an old one, you essentially create another way to refer to the same file.

যখন আপনি একটি নতুন ফাইলের নাম একটি পুরানোটির সাথে লিঙ্ক করেন, তখন আপনি মূলত একই ফাইলটি উল্লেখ করার অন্য একটি উপায় তৈরি করেন।


The command-line program ln is used to do this.

এই কাজটি করার জন্য ln কমান্ড-লাইন প্রোগ্রামটি ব্যবহার করা হয়।


We created a file with the word hello in it.

আমরা এতে 'হ্যালো' শব্দটি দিয়ে একটি ফাইল তৈরি করেছি।


We can examine the file by either opening file or file2.

আমরা file অথবা file2 খুলে ফাইলটি পরীক্ষা করতে পারি।


ফাইলটি কোনোভাবেই কপি করা হয় না।


You now just have two human names that both refer to the same file.

আপনার কাছে এখন কেবল দুটি মানুষের নাম রয়েছে যা উভয়ই একই ফাইলকে নির্দেশ করে।


By passing the -i flag to ls, it prints out the inode number of each file.

ls-এর কাছে -i ফ্ল্যাগটি পাস করার মাধ্যমে, এটি প্রতিটি ফাইলের ইনোড নম্বর প্রিন্ট করে।


When you create a file, you are really doing two things.

যখন আপনি একটি ফাইল তৈরি করেন, তখন আপনি আসলে দুটি কাজ করেন।


First, you are making a structure (the inode) that will track virtually all relevant information about the file.

প্রথমত, আপনি একটি কাঠামো (ইনোড) তৈরি করছেন যা ফাইলের প্রায় সমস্ত প্রাসঙ্গিক তথ্য ট্র্যাক করবে।


To remove a file from the file system, we call unlink().

ফাইল সিস্টেম থেকে একটি ফাইল সরাতে, আমরা unlink() কল করি।


The reason this works is because when the file system unlinks file, it checks a reference count within the inode number.

এর কারণ হল যখন ফাইল সিস্টেম ফাইল আনলিঙ্ক করে, তখন এটি ইনোড নম্বরের মধ্যে একটি রেফারেন্স গণনা পরীক্ষা করে।


You can see the reference count of a file using stat() of course.

অবশ্যই, আপনি stat() ব্যবহার করে একটি ফাইলের রেফারেন্স গণনা দেখতে পারেন।


The directory 'foo' would have an entry ('foo', '10') that maps the user-readable name to the low-level name.

'ফূ' ডিরেক্টরিটিতে ('ফূ', '১০') এমন একটি এন্ট্রি থাকবে যা ব্যবহারকারীর পাঠযোগ্য নামটিকে নিম্ন-স্তরের নামের সাথে যুক্ত করবে।


Each entry in a directory refers to either files or other directories.

একটি ডিরেক্টরির প্রতিটি এন্ট্রি ফাইল বা অন্যান্য ডিরেক্টরিগুলির উল্লেখ করে।


By placing directories within other directories, users are able to build an arbitrary directory tree.

অন্যান্য ডিরেক্টরির মধ্যে ডিরেক্টরি স্থাপন করে, ব্যবহারকারীরা একটি নির্বিচারে ডিরেক্টরি ট্রি তৈরি করতে সক্ষম হয়।


The directory hierarchy starts at a root directory.

ডিরেক্টরি শ্রেণীবিন্যাস একটি মূল ডিরেক্টরি থেকে শুরু হয়।


For example, if a user created a directory 'foo' in the root directory, and then created a file 'bar.txt' in the directory 'foo', we could refer to the file by its absolute pathname, which in this case would be '/foo/bar.txt'.

উদাহরণস্বরূপ, যদি একজন ব্যবহারকারী মূল ডিরেক্টরিতে 'ফূ' নামে একটি ডিরেক্টরি তৈরি করে এবং তারপর 'ফূ' ডিরেক্টরিতে 'বার.টিএক্সটি' নামে একটি ফাইল তৈরি করে, তবে আমরা এর সম্পূর্ণ পাথনাম দ্বারা ফাইলটিকে উল্লেখ করতে পারি, যা এই ক্ষেত্রে '/ফূ/বার.টিএক্সটি' হবে।


Directories and files can have the same name as long as they are in different locations in the file-system tree.

ডিরেক্টরি এবং ফাইলগুলির একই নাম থাকতে পারে যতক্ষণ না সেগুলি ফাইল-সিস্টেম ট্রিতে ভিন্ন স্থানে থাকে।


Naming is an important aspect of computer systems.

নামকরণ কম্পিউটার সিস্টেমের একটি গুরুত্বপূর্ণ দিক।


In UNIX systems, virtually everything that you can think of is named through the file system.

ইউনিক্স সিস্টেমে, আপনি যা কিছু ভাবতে পারেন তা ফাইল সিস্টেমের মাধ্যমে নামকরণ করা হয়।


This uniformity of naming eases your conceptual model of the system, and makes the system simpler and more modular.

নামকরণের এই অভিন্নতা আপনার সিস্টেমের ধারণাগত মডেলকে সহজ করে তোলে এবং সিস্টেমটিকে আরও সহজ এবং আরও মডুলার করে তোলে।


Thus, whenever creating a system or interface, think carefully about what names you are using.

অতএব, একটি সিস্টেম বা ইন্টারফেস তৈরি করার সময়, আপনি কী নাম ব্যবহার করছেন সে সম্পর্কে সতর্কভাবে চিন্তা করুন।


You may also notice that the file name in this example often has two parts: bar and txt, separated by a period.

আপনি সম্ভবত লক্ষ্য করবেন যে এই উদাহরণে ফাইলের নামের দুটি অংশ রয়েছে: বার এবং টিএক্সটি, যা একটি সময়ের দ্বারা পৃথক করা হয়েছে।


Thus, we can see one great thing provided by the file system: a convenient way to name all the files we are interested in.

সুতরাং, আমরা ফাইল সিস্টেম দ্বারা সরবরাহ করা একটি দুর্দান্ত জিনিস দেখতে পারি: আমাদের আগ্রহী সমস্ত ফাইলের নাম দেওয়ার একটি সুবিধাজনক উপায়।


Names are important in systems as the first step to accessing any resource is being able to name it.

সিস্টেমগুলিতে নামগুলি গুরুত্বপূর্ণ কারণ কোনও সংস্থান অ্যাক্সেস করার প্রথম পদক্ষেপটি হল এটির নামকরণ করতে সক্ষম হওয়া।


Let’s now discuss the file system interface in more detail.

আসুন এখন ফাইল সিস্টেম ইন্টারফেসটি আরও বিস্তারিতভাবে আলোচনা করি।


We’ll start with the basics of creating, accessing, and deleting files.

আমরা ফাইল তৈরি, অ্যাক্সেস এবং মুছে ফেলার মৌলিক বিষয়গুলি দিয়ে শুরু করব।


This can be accomplished with the open system call.

এটি ওপেন সিস্টেম কল দিয়ে সম্পন্ন করা যেতে পারে।


Here is some example code to create a file called “foo” in the current working directory.

এখানে বর্তমান ওয়ার্কিং ডিরেক্টরিতে “ফূ” নামে একটি ফাইল তৈরি করার জন্য কিছু উদাহরণ কোড দেওয়া হল।


The routine open() takes a number of different flags.

রুটিন ওপেন() বিভিন্ন সংখ্যক ফ্ল্যাগ নেয়।


One important aspect of open() is what it returns: a file descriptor.

ওপেন()-এর একটি গুরুত্বপূর্ণ দিক হল এটি কী প্রদান করে: একটি ফাইল ডেস্ক্রিপ্টর।


A file descriptor is just an integer, private per process, and is used in UNIX systems to access files.

একটি ফাইল ডেস্ক্রিপ্টর হল কেবল একটি পূর্ণসংখ্যা, যা প্রতিটি প্রক্রিয়ার জন্য ব্যক্তিগত এবং ইউনিক্স সিস্টেমে ফাইল অ্যাক্সেস করতে ব্যবহৃত হয়।


The file system uses caching to improve performance.

ফাইল সিস্টেম কর্মক্ষমতা উন্নত করতে ক্যাশিং ব্যবহার করে।


Reading and writing files can be expensive due to I/O operations.

I/O অপারেশনের কারণে ফাইল পড়া এবং লেখা ব্যয়বহুল হতে পারে।


Modern systems integrate virtual memory pages and file system pages into a unified page cache.

আধুনিক সিস্টেমগুলি ভার্চুয়াল মেমরি পৃষ্ঠা এবং ফাইল সিস্টেম পৃষ্ঠাগুলিকে একটি সমন্বিত পেজ ক্যাশে একত্রিত করে।


Caching can significantly reduce the number of I/O operations.

ক্যাশিং উল্লেখযোগ্যভাবে I/O অপারেশনের সংখ্যা কমাতে পারে।


Write buffering can improve performance by batching updates.

রাইট বাফারিং আপডেটের ব্যাচিং করে কর্মক্ষমতা উন্নত করতে পারে।


Some applications force writes to disk to avoid data loss.

কিছু অ্যাপ্লিকেশন ডেটা ক্ষতি এড়াতে ডিস্কে লিখতে বাধ্য করে।


The file system stores metadata about each file.

ফাইল সিস্টেম প্রতিটি ফাইল সম্পর্কে মেটাডেটা সংরক্ষণ করে।


Directories are a specific type of file that store name-to-inode mappings.

ডিরেক্টরি হল এক ধরণের ফাইল যা নাম-থেকে-ইনোড ম্যাপিং সংরক্ষণ করে।


File systems often use bitmaps to track free or allocated inodes and data blocks.

ফাইল সিস্টেম প্রায়শই বিনামূল্যে বা বরাদ্দকৃত ইনোড এবং ডেটা ব্লকগুলি ট্র্যাক করতে বিটম্যাপ ব্যবহার করে।


The Fast File System (FFS) was designed to be disk aware.

ফাস্ট ফাইল সিস্টেম (FFS) ডিস্ক সচেতন হওয়ার জন্য ডিজাইন করা হয়েছিল।


FFS divides the disk into cylinder groups.

FFS ডিস্কটিকে সিলিন্ডার গ্রুপে বিভক্ত করে।


Each cylinder group contains a copy of the superblock.

প্রতিটি সিলিন্ডার গ্রুপে সুপারব্লকের একটি অনুলিপি থাকে।


The inode and data bitmaps track free inodes and data blocks.

ইনোড এবং ডেটা বিটম্যাপ বিনামূল্যে ইনোড এবং ডেটা ব্লকগুলি ট্র্যাক করে।


FFS places related files and directories within the same group.

FFS সম্পর্কিত ফাইল এবং ডিরেক্টরিগুলিকে একই গ্রুপের মধ্যে রাখে।


The goal is to improve performance by keeping related stuff together.

লক্ষ্য হল সম্পর্কিত জিনিসগুলিকে একসাথে রেখে কর্মক্ষমতা উন্নত করা।


FFS allocates the data blocks of a file in the same group as its inode.

FFS একটি ফাইলের ডেটা ব্লকগুলি তার ইনোডের মতো একই গ্রুপে বরাদ্দ করে।


Large files have a special placement policy to avoid filling a block group.

বড় ফাইলগুলির একটি বিশেষ স্থান নির্ধারণ নীতি রয়েছে যাতে একটি ব্লক গ্রুপ পূরণ করা না হয়।


The large-file exception spreads the file's blocks across different groups.

বৃহৎ-ফাইল ব্যতিক্রম ফাইলের ব্লকগুলিকে বিভিন্ন গ্রুপের মধ্যে ছড়িয়ে দেয়।


Amortization is used to reduce overhead by doing more work per overhead paid.

অ্যামোর্টাইজেশন ওভারহেড প্রতি আরও বেশি কাজ করে ওভারহেড কমাতে ব্যবহৃত হয়।


The file system's design significantly impacts overall performance.

ফাইল সিস্টেমের ডিজাইন সামগ্রিক কর্মক্ষমতাকে উল্লেখযোগ্যভাবে প্রভাবিত করে।


The inode is the generic name that is used in many file systems to describe the structure that holds the metadata for a given file.

ইনোড হল একটি সাধারণ নাম যা অনেক ফাইল সিস্টেমে ব্যবহৃত হয় একটি নির্দিষ্ট ফাইলের মেটাডেটা ধারণ করে এমন কাঠামো বর্ণনা করতে।


Each inode is implicitly referred to by a number (called the inumber), which we’ve earlier called the low-level name of the file.

প্রতিটি ইনোডকে একটি সংখ্যা দ্বারা নির্দেশিত করা হয় (ইন নম্বর বলা হয়), যা আমরা আগে ফাইলের নিম্ন-স্তরের নাম হিসাবে উল্লেখ করেছি।


In vsfs, we thus have the following layout for the beginning of the file system partition.

সুতরাং, vsfs-এ, আমাদের ফাইল সিস্টেম পার্টিশনের শুরুতে নিম্নলিখিত বিন্যাস রয়েছে।


To read inode number 32, the file system would first calculate the offset into the inode region.

ইনোড নম্বর 32 পড়তে, ফাইল সিস্টেম প্রথমে ইনোড অঞ্চলে অফসেট গণনা করবে।


Inside each inode is virtually all of the information you need about a file.

প্রতিটি ইনোডের ভিতরে কার্যত একটি ফাইল সম্পর্কে আপনার প্রয়োজনীয় সমস্ত তথ্য রয়েছে।


One of the most important decisions in the design of the inode is how it refers to where data blocks are.

ইনওডের নকশার সবচেয়ে গুরুত্বপূর্ণ সিদ্ধান্তগুলির মধ্যে একটি হল এটি কীভাবে ডেটা ব্লকগুলির উল্লেখ করে।


Such an approach is limited: for example, if you want to have a file that is really big, you are out of luck.

এই ধরনের একটি পদ্ধতির সীমাবদ্ধতা রয়েছে: উদাহরণস্বরূপ, আপনি যদি সত্যিই বড় একটি ফাইল রাখতে চান তবে আপনার কপাল খারাপ।


To support bigger files, file system designers have had to introduce different structures within inodes.

বড় ফাইল সমর্থন করার জন্য, ফাইল সিস্টেম ডিজাইনারদের ইনোডের মধ্যে বিভিন্ন কাঠামো তৈরি করতে হয়েছে।


One common idea is to have a special pointer known as an indirect pointer.

একটি সাধারণ ধারণা হল একটি বিশেষ পয়েন্টার রাখা যা একটি পরোক্ষ পয়েন্টার হিসাবে পরিচিত।


Assuming that a block is 4KB and 4-byte disk addresses, that adds another 1024 pointers.

ধরে নিই যে একটি ব্লক 4KB এবং 4-বাইটের ডিস্ক ঠিকানা, এটি আরও 1024টি পয়েন্টার যোগ করে।


A different approach is to use extents instead of pointers.

একটি ভিন্ন পদ্ধতি হল পয়েন্টারের পরিবর্তে এক্সটেনট ব্যবহার করা।


Not surprisingly, in such an approach, you might want to support even larger files.

আশ্চর্যজনকভাবে, এই ধরনের একটি পদ্ধতিতে, আপনি আরও বড় ফাইল সমর্থন করতে চাইতে পারেন।


Overall, this imbalanced tree is referred to as the multi-level index approach to pointing to file blocks.

সব মিলিয়ে, এই ভারসাম্যহীন গাছটিকে ফাইল ব্লকের দিকে নির্দেশ করার জন্য মাল্টি-লেভেল ইনডেক্স পদ্ধতি হিসাবে উল্লেখ করা হয়।


Many file systems use a multi-level index, including commonly-used file systems such as Linux ext2 and ext3.

অনেক ফাইল সিস্টেম মাল্টি-লেভেল ইনডেক্স ব্যবহার করে, যার মধ্যে সাধারণত ব্যবহৃত ফাইল সিস্টেম যেমন লিনাক্স ext2 এবং ext3 অন্তর্ভুক্ত।


Another simpler approach in designing inodes is to use a linked list.

ইনওড ডিজাইন করার আরেকটি সহজ পদ্ধতি হল একটি লিঙ্কযুক্ত তালিকা ব্যবহার করা।


As you might have guessed, linked file allocation performs poorly for some workloads.

আপনি সম্ভবত অনুমান করেছেন, লিঙ্কযুক্ত ফাইল বরাদ্দ কিছু কাজের চাপের জন্য খারাপভাবে কাজ করে।


Yes, this classic old Windows file system, before NTFS, is based on a simple linked-based allocation scheme.

হ্যাঁ, NTFS-এর আগের এই ক্লাসিক পুরনো উইন্ডোজ ফাইল সিস্টেমটি একটি সাধারণ লিঙ্ক-ভিত্তিক বরাদ্দ স্কিমের উপর ভিত্তি করে তৈরি।


In vsfs (as in many file systems), directories have a simple organization.

vsfs-এ (যেমন অনেক ফাইল সিস্টেমে), ডিরেক্টরিগুলির একটি সাধারণ সংগঠন রয়েছে।


A file system must track which inodes and data blocks are free, and which are not, so that when a new file or directory is allocated, it can find space for it.

একটি ফাইল সিস্টেমকে ট্র্যাক করতে হবে যে কোন ইনোড এবং ডেটা ব্লকগুলি বিনামূল্যে আছে এবং কোনটি নেই, যাতে একটি নতুন ফাইল বা ডিরেক্টরি বরাদ্দ করা হলে, এটি তার জন্য স্থান খুঁজে পেতে পারে।


Now that we have some idea of how files and directories are stored on disk, we should be able to follow the flow of operation during the activity of reading or writing a file.

যেহেতু আমাদের এখন ফাইল এবং ডিরেক্টরিগুলি কীভাবে ডিস্কে সংরক্ষণ করা হয় সে সম্পর্কে ধারণা আছে, তাই আমাদের একটি ফাইল পড়া বা লেখার সময় অপারেশনের প্রবাহ অনুসরণ করতে সক্ষম হওয়া উচিত।


The file system manages data structures to implement abstractions like files and directories.

ফাইল সিস্টেম ফাইল এবং ডিরেক্টরির মতো বিমূর্ততাগুলি প্রয়োগ করতে ডেটা কাঠামো পরিচালনা করে।


Power loss or system crashes can lead to inconsistent states in persistent data structures.

বিদ্যুৎ বিভ্রাট বা সিস্টেম ক্র্যাশগুলি স্থায়ী ডেটা কাঠামোতে অসংগত অবস্থার দিকে নিয়ে যেতে পারে।


The crash-consistency problem arises when updating on-disk structures.

ডিস্কে থাকা কাঠামো আপডেট করার সময় ক্র্যাশ-সামঞ্জস্যের সমস্যা দেখা দেয়।


Fsck is a tool used to find and repair inconsistencies in file systems.

Fsck হল ফাইল সিস্টেমে অসামঞ্জস্যতা খুঁজে বের করতে এবং মেরামত করতে ব্যবহৃত একটি সরঞ্জাম।


Journaling adds overhead but recovers more quickly from crashes.

জার্নালিং কিছু ওভারহেড যোগ করে তবে ক্র্যাশ থেকে দ্রুত পুনরুদ্ধার করে।


The inode bitmap and data bitmap are crucial for file system integrity.

ফাইল সিস্টেমের অখণ্ডতার জন্য ইনোড বিটম্যাপ এবং ডেটা বিটম্যাপ অত্যন্ত গুরুত্বপূর্ণ।


A crash during an update can leave the file system in an inconsistent state.

আপডেটের সময় ক্র্যাশ ফাইল সিস্টেমকে অসংগত অবস্থায় ফেলে দিতে পারে।


Fsck operates in phases to check and repair the file system.

Fsck ফাইল সিস্টেম পরীক্ষা এবং মেরামত করার জন্য বিভিন্ন পর্যায়ে কাজ করে।


The superblock is checked to ensure the file system's integrity.

ফাইল সিস্টেমের অখণ্ডতা নিশ্চিত করতে সুপারব্লক পরীক্ষা করা হয়।


Fsck verifies the link count of each allocated inode.

Fsck প্রতিটি বরাদ্দকৃত ইনোডের লিঙ্ক গণনা যাচাই করে।


Duplicate pointers and bad blocks are also checked by fsck.

Fsck-এর মাধ্যমে ডুপ্লিকেট পয়েন্টার এবং খারাপ ব্লকগুলিও পরীক্ষা করা হয়।


Directory checks are performed to ensure data integrity.

ডেটা অখণ্ডতা নিশ্চিত করতে ডিরেক্টরি পরীক্ষা করা হয়।


Journaling is a technique that adds a log of changes before applying them.

জার্নালিং এমন একটি কৌশল যা পরিবর্তনগুলি প্রয়োগ করার আগে তাদের একটি লগ যোগ করে।


The file system can be left in a funny state after a crash.

ক্র্যাশের পরে ফাইল সিস্টেম একটি অদ্ভুত অবস্থায় থাকতে পারে।


Crash scenarios must be considered to understand the problem.

সমস্যাটি বুঝতে ক্র্যাশ পরিস্থিতি বিবেচনা করতে হবে।


The goal is to move the file system from one consistent state to another atomically.

লক্ষ্য হল ফাইল সিস্টেমকে একটি সুসংগত অবস্থা থেকে অন্যটিতে পারমাণবিকভাবে সরানো।


Fsck is a lazy approach to crash consistency.

Fsck ক্র্যাশ সামঞ্জস্যের একটি অলস পদ্ধতি।


Modern disks are much smarter than older ones.

আধুনিক ডিস্কগুলি আগেরগুলির চেয়ে অনেক বেশি স্মার্ট।


File systems no longer have to worry about low-level details.

ফাইল সিস্টেমগুলিকে আর নিম্ন-স্তরের বিবরণ নিয়ে চিন্তা করতে হবে না।


Usability improvements are important for system adoption.

সিস্টেম গ্রহণের জন্য ব্যবহারযোগ্যতার উন্নতি গুরুত্বপূর্ণ।


The system scans for revoke records during journal replay.

জার্নাল পুনরায় চালানোর সময় সিস্টেমটি বাতিল রেকর্ডগুলির জন্য স্ক্যান করে।


Journaling reduces recovery time after a crash.

জার্নালিং ক্র্যাশের পরে পুনরুদ্ধারের সময় কমিয়ে দেয়।


The file system can determine if the file is consistent.

ফাইল সিস্টেমটি নির্ধারণ করতে পারে যে ফাইলটি সুসংগত কিনা।


We have introduced the problem of crash consistency.

আমরা ক্র্যাশ ধারাবাহিকতার সমস্যাটি উপস্থাপন করেছি।


Journaling reduces recovery time from O(size-of-the-disk-volume) to O(size-of-the-log).

জার্নালিং পুনরুদ্ধারের সময় O(ডিস্ক-ভলিউমের আকার) থেকে O(লগের আকার)-এ কমিয়ে দেয়।


ZFS কপি-অন-রাইট এবং জার্নালিং ব্যবহার করে।


This approach carefully orders all writes to the file system.

এই পদ্ধতিটি ফাইল সিস্টেমে সমস্ত লেখার ক্রম সাবধানে সাজায়।


Implementing Soft Updates can be a challenge.

সফট আপডেটগুলি প্রয়োগ করা একটি চ্যালেঞ্জ হতে পারে।


The system first scans for such revoke records.

সিস্টেমটি প্রথমে এই ধরনের বাতিল রেকর্ডগুলির জন্য স্ক্যান করে।


The file system checker works but is likely too slow.

ফাইল সিস্টেম পরীক্ষক কাজ করে তবে সম্ভবত খুব ধীর।


The older approach of building a file system checker works.

ফাইল সিস্টেম পরীক্ষক তৈরির পুরনো পদ্ধতি কাজ করে।


The journal is updated with its new location.

জার্নালটি তার নতুন অবস্থান সহ আপডেট করা হয়।


The imap is a structure that takes an inode number as input.

ইমাপ হল এমন একটি কাঠামো যা ইনোড নম্বরকে ইনপুট হিসাবে নেয়।


LFS কখনোই বিদ্যমান ডেটা ওভাররাইট করে না।


How can a file system turns all writes into sequential writes?

কিভাবে একটি ফাইল সিস্টেম সমস্ত লেখাকে ধারাবাহিক লেখায় পরিণত করতে পারে?


LFS uses an ancient technique known as write buffering.

LFS একটি প্রাচীন কৌশল ব্যবহার করে যা রাইট বাফারিং নামে পরিচিত।


The effective rate of writing is the amount of data written divided by the total time.

লেখার কার্যকর হার হল মোট সময় দ্বারা লিখিত ডেটার পরিমাণকে ভাগ করা।


Finding inodes is easy, because they are organized in an array.

ইনডগুলি খুঁজে পাওয়া সহজ, কারণ সেগুলি একটি অ্যারেতে সংগঠিত হয়।


LFS-এ জীবন আরও কঠিন।


The imap, unfortunately, needs to be kept persistent.

দুর্ভাগ্যবশত, ইমাপকে অবিচলিত রাখতে হবে।


The allocated blocks and read the entire directory tree may take many minutes or hours.

বরাদ্দকৃত ব্লকগুলি এবং সম্পূর্ণ ডিরেক্টরি ট্রি পড়তে অনেক মিনিট বা ঘন্টা সময় লাগতে পারে।


Performance offsck, as disks grew in capacity and RAIDs grew in popularity, became prohibitive.

ডিস্কের ক্ষমতা এবং RAID-এর জনপ্রিয়তা বৃদ্ধির সাথে সাথে কর্মক্ষমতা হ্রাস পাওয়াটা বেশ কঠিন হয়ে দাঁড়িয়েছিল।


Consider our example above, where just three blocks are written to the disk.

উপরের উদাহরণটি বিবেচনা করুন, যেখানে মাত্র তিনটি ব্লক ডিস্কে লেখা হয়েছে।


This situation is akin to dropping your keys on the floor in your bedroom.

এই পরিস্থিতি অনেকটা আপনার বেডরুমে মেঝেতে চাবি ফেলে দেওয়ার মতো।


Thus, as disks (and RAIDs) grew, researchers and practitioners started to look for other solutions.

সুতরাং, ডিস্ক (এবং RAID) বৃদ্ধি পাওয়ার সাথে সাথে, গবেষক এবং অনুশীলনকারীরা অন্যান্য সমাধানের সন্ধান শুরু করেন।


Probably the most popular solution to the consistent update problem is to steal an idea from the world of database management systems.

সামঞ্জস্যপূর্ণ আপডেটের সমস্যার সবচেয়ে জনপ্রিয় সমাধান সম্ভবত ডেটাবেস ম্যানেজমেন্ট সিস্টেমের জগৎ থেকে একটি ধারণা ধার করা।


That idea, known as write-ahead logging, was invented to address exactly this type of problem.

এই ধারণা, যা রাইট-এহেড লগিং নামে পরিচিত, ঠিক এই ধরনের সমস্যা সমাধানের জন্য উদ্ভাবিত হয়েছিল।


In file systems, we usually call write-ahead logging journaling for historical reasons.

ফাইল সিস্টেমে, ঐতিহাসিক কারণে আমরা সাধারণত রাইট-এহেড লগিংকে জার্নালিং বলি।


The first file system to do this was Cedar.

এটি করা প্রথম ফাইল সিস্টেম ছিল সিডার।


মূল ধারণাটি নিম্নরূপ।


When updating the disk, before overwriting the structures in place, first write down a little note describing what you are about to do.

ডিস্ক আপডেট করার সময়, বিদ্যমান কাঠামো ওভাররাইট করার আগে, আপনি কী করতে যাচ্ছেন তা বর্ণনা করে প্রথমে একটি ছোট নোট লিখুন।


Writing this note is the “write ahead” part, and we write it to a structure that we organize as a “log”.

এই নোট লেখাটি হল “রাইট এহেড” অংশ, এবং আমরা এটিকে এমন একটি কাঠামোতে লিখি যা আমরা একটি “লগ” হিসাবে সংগঠিত করি।


By writing the note to disk, you are guaranteeing that if a crash takes places during the update, you can go back and look at the note you made and try again.

ডিস্কে নোটটি লেখার মাধ্যমে, আপনি নিশ্চিত করছেন যে আপডেটের সময় ক্র্যাশ হলে, আপনি ফিরে যেতে পারেন এবং আপনার তৈরি করা নোটটি দেখতে পারেন এবং আবার চেষ্টা করতে পারেন।


By design, journaling thus adds a bit of work during updates to greatly reduce the amount of work required during recovery.

নকশা অনুসারে, জার্নালিং এইভাবে আপডেটের সময় কিছুটা কাজ যোগ করে পুনরুদ্ধারের সময় প্রয়োজনীয় কাজের পরিমাণকে ব্যাপকভাবে হ্রাস করে।


We’ll now describe how Linux ext3, a popular journaling file system, incorporates journaling into the file system.

আমরা এখন বর্ণনা করব কিভাবে জনপ্রিয় জার্নালিং ফাইল সিস্টেম, লিনাক্স ext3, ফাইল সিস্টেমে জার্নালিং অন্তর্ভুক্ত করে।


Most of the on-disk structures are identical to Linux ext2.

বেশিরভাগ অন-ডিস্ক কাঠামো লিনাক্স ext2-এর মতো।


The new key structure is the journal itself, which occupies some small amount of space within the partition or on another device.

নতুন মূল কাঠামোটি হল জার্নাল নিজেই, যা পার্টিশনের মধ্যে বা অন্য ডিভাইসে কিছু অল্প পরিমাণ স্থান দখল করে।


The real difference is just the presence of the journal, and of course, how it is used.

আসল পার্থক্য হল কেবল জার্নালের উপস্থিতি, এবং অবশ্যই, এটি কীভাবে ব্যবহৃত হয়।


Let’s look at a simple example to understand how data journaling works.

ডেটা জার্নালিং কীভাবে কাজ করে তা বুঝতে একটি সাধারণ উদাহরণ দেখা যাক।


Say we have our canonical update again, where we wish to write the ‘inode (I[v2]), bitmap (B[v2]), and data block (Db) to disk again.

ধরুন আমাদের আবার ক্যানোনিকাল আপডেট আছে, যেখানে আমরা ‘inode (I[v2]), বিটম্যাপ (B[v2]), এবং ডেটা ব্লক (Db) আবার ডিস্কে লিখতে চাই।


When accessing a seemingly-working disk, it may return an error.

একটি আপাতদৃষ্টিতে কার্যকরী ডিস্কে প্রবেশ করার সময়, এটি একটি ত্রুটি দেখাতে পারে।


এটি কেবল ভুল ডেটা ফেরত দিতে পারে।


Both of these types of faults are somewhat rare.

এই ধরনের ত্রুটি উভয়ই কিছুটা বিরল।


The table shows the percent of drives that exhibited at least one LSE.

সারণীতে সেই ড্রাইভগুলির শতাংশ দেখানো হয়েছে যেগুলিতে অন্তত একটি LSE দেখা গেছে।


Buying better drives reduces the frequency of both types of problem.

ভালো ড্রাইভ কিনলে উভয় প্রকার সমস্যার ফ্রিকোয়েন্সি কমে যায়।


আপনাকে এগুলি সম্পর্কে সাবধানে চিন্তা করতে হবে।


Costly drives with more than one LSE are as likely to develop additional errors.

একাধিক LSE যুক্ত ব্যয়বহুল ড্রাইভে অতিরিক্ত ত্রুটি হওয়ার সম্ভাবনা বেশি।


For most drives, annual error rate increases in year two.

বেশিরভাগ ড্রাইভে, দ্বিতীয় বছরে বার্ষিক ত্রুটির হার বৃদ্ধি পায়।


ডিস্কের আকারের সাথে LSE বৃদ্ধি পায়।


যেসব ডিস্কে LSE আছে, সেগুলিতে সাধারণত ৫০টির কম থাকে।


Disks with LSEs are more likely to develop additional LSEs.

LSE যুক্ত ডিস্কগুলিতে অতিরিক্ত LSE হওয়ার সম্ভাবনা বেশি।


ডিস্ক স্ক্রাবিং উপযোগী।


The chance of corruption varies greatly across different drive models.

দুর্নীতির সম্ভাবনা বিভিন্ন ড্রাইভ মডেলের মধ্যে ব্যাপকভাবে পরিবর্তিত হয়।


Age affects are different across models.

বয়সের প্রভাব মডেলগুলির মধ্যে ভিন্ন।


Workload and disk size have little impact on corruption.

কাজের চাপ এবং ডিস্কের আকারের দুর্নীতির উপর সামান্য প্রভাব রয়েছে।


Most disks with corruption only have a few corruptions.

দুর্নীতিগ্রস্ত বেশিরভাগ ডিস্কে শুধুমাত্র কয়েকটি দুর্নীতি থাকে।


Corruption is not independent with a disk or across disks in RAID.

দুর্নীতি একটি ডিস্কের সাথে বা RAID-এ ডিস্কগুলির মধ্যে স্বাধীন নয়।


If you really wish to build a reliable storage system, you must include machinery to detect and recovery from both LSEs and block corruption.

আপনি যদি সত্যিই একটি নির্ভরযোগ্য স্টোরেজ সিস্টেম তৈরি করতে চান তবে আপনাকে LSE এবং ব্লক দুর্নীতি উভয় থেকেই সনাক্তকরণ এবং পুনরুদ্ধারের জন্য ব্যবস্থা অন্তর্ভুক্ত করতে হবে।


When a storage system tries to access a block, and the disk returns an error, the storage system should simply use whatever redundancy mechanism it has to return the correct data.

যখন একটি স্টোরেজ সিস্টেম একটি ব্লকে অ্যাক্সেস করার চেষ্টা করে এবং ডিস্ক একটি ত্রুটি দেখায়, তখন স্টোরেজ সিস্টেমটিকে কেবল সঠিক ডেটা ফেরত দেওয়ার জন্য এটির যে কোনও রিডানডেন্সি প্রক্রিয়া ব্যবহার করা উচিত।


The growing prevalence of LSEs has influenced RAID designs over the years.

LSE-এর ক্রমবর্ধমান প্রবণতা বছরের পর বছর ধরে RAID ডিজাইনকে প্রভাবিত করেছে।


It turns out that file systems can be quite complex.

দেখা যাচ্ছে যে ফাইল সিস্টেমগুলি বেশ জটিল হতে পারে।


The paper discusses how file systems react to failures.

এই নিবন্ধে আলোচনা করা হয়েছে কিভাবে ফাইল সিস্টেমগুলি ব্যর্থতার প্রতিক্রিয়া জানায়।


We found numerous bugs and design flaws.

আমরা অসংখ্য বাগ এবং নকশার ত্রুটি খুঁজে পেয়েছি।


This has helped yield new, more robust file systems.

এটি নতুন, আরও শক্তিশালী ফাইল সিস্টেম তৈরি করতে সাহায্য করেছে।


Another paper improved write performance.

অন্য একটি গবেষণাপত্র লেখার কর্মক্ষমতা উন্নত করেছে।


This paper is a must-read for those building distributed systems.

যাঁরা বিতরণকৃত সিস্টেম তৈরি করছেন, তাঁদের জন্য এই প্রবন্ধটি অবশ্যই পাঠ্য।


It talks about building fault-tolerant services.

এটি ফল্ট-টলারেন্ট পরিষেবা তৈরি করার বিষয়ে আলোচনা করে।


Our work adds data protection to the page cache.

আমাদের কাজ পেজ ক্যাশে ডেটা সুরক্ষা যোগ করে।


File systems seem interesting, and yet complicated.

ফাইল সিস্টেমগুলি আকর্ষণীয়, তবুও জটিল বলে মনে হয়।


চিরকাল একটি দীর্ঘ সময়।


Updates to persistent storage are a challenging problem.

স্থায়ী স্টোরেজে আপডেট করা একটি চ্যালেঞ্জিং সমস্যা।


আমি ডিস্ক শিডিউলিং সম্পর্কেও শিখেছি।


ওই জিনিসটা দারুণ।


ভালো প্রশ্ন!


Even with Flash, all of this stuff is still relevant.

এমনকি ফ্ল্যাশ-এর ক্ষেত্রেও, এই সমস্ত কিছু এখনও প্রাসঙ্গিক।


Flash Translation Layers (FTLs) use log-structuring internally.

ফ্ল্যাশ ট্রান্সলেশন লেয়ার (FTL) অভ্যন্তরীণভাবে লগ-গঠন ব্যবহার করে।


Many of the ideas we have studied will continue to be useful.

আমরা যে ধারণাগুলি অধ্যয়ন করেছি তার অনেক কিছুই উপযোগী হতে থাকবে।


বিতরণকৃত সিস্টেম তৈরি করা কঠিন।


Messages get lost, machines go down, disks corrupt data.

বার্তা হারিয়ে যায়, মেশিন বন্ধ হয়ে যায়, ডিস্ক ডেটা দূষিত করে।


They use replication, retry, and various other tricks.

তারা প্রতিলিপি, পুনরায় চেষ্টা এবং বিভিন্ন কৌশল ব্যবহার করে।


LFS places chunks of the inode map right next to where it is writing all of the other new information.

LFS ইনোড ম্যাপের অংশগুলি সেই জায়গার ঠিক পাশে রাখে যেখানে এটি অন্যান্য সমস্ত নতুন তথ্য লিখছে।


Thus, when appending a data block to a filek, LFS actually writes the new data block, its inode, and a piece of the inode map all together onto the disk.

সুতরাং, যখন একটি ডেটা ব্লক একটি ফাইলকে যুক্ত করা হয়, LFS আসলে নতুন ডেটা ব্লক, তার ইনোড, এবং ইনোড ম্যাপের একটি অংশ একসাথে ডিস্কে লিখে।


How do we find the inode map, now that pieces of it are alsonow spread across the disk?

আমরা কিভাবে ইনোড ম্যাপ খুঁজে পাব, যখন এর অংশগুলি এখন ডিস্ক জুড়ে ছড়িয়ে আছে?


The checkpoint region contains pointers to (i.e., ad- dresses of) the latest pieces of the inode map, and thus the inode map pieces can be found by reading the CR first.

চেকপয়েন্ট অঞ্চলে ইনোড ম্যাপের সর্বশেষ অংশগুলির পয়েন্টার (অর্থাৎ, ঠিকানা) রয়েছে এবং এইভাবে ইনোড ম্যাপের অংশগুলি প্রথমে CR পড়ে পাওয়া যেতে পারে।


Note the checkpoint region is only updated periodically (say every 30 seconds or so), and thus perfor- mance is not ill-affected.

নোট করুন যে চেকপয়েন্ট অঞ্চলটি শুধুমাত্র পর্যায়ক্রমে আপডেট করা হয় (ধরুন প্রতি 30 সেকেন্ড বা তার বেশি), এবং এইভাবে কর্মক্ষমতা খারাপভাবে প্রভাবিত হয় না।


The overall structure of the on-disk layout contains a checkpoint region (which points to the latest pieces of the in- ode map); the inode map pieces each contain addresses of the inodes; the inodes point to files (and directories) just like typical UNIXfile systems.

ডিস্কের বিন্যাসের সামগ্রিক কাঠামোতে একটি চেকপয়েন্ট অঞ্চল রয়েছে (যা ইনোড ম্যাপের সর্বশেষ অংশগুলির দিকে নির্দেশ করে); ইনোড ম্যাপের অংশগুলির প্রত্যেকটিতে ইনোডের ঠিকানা রয়েছে; ইনোডগুলি ফাইলগুলির (এবং ডিরেক্টরিগুলির) দিকে নির্দেশ করে যেমন সাধারণ UNIX ফাইল সিস্টেমগুলিতে থাকে।


A real file system would of course have a much bigger CR (indeed, it would have two, as we’ll come to understand later), many imap chunks, and of course many more inodes, data blocks, etc.

একটি আসল ফাইল সিস্টেমে অবশ্যই একটি বৃহত্তর CR থাকবে (প্রকৃতপক্ষে, এটির দুটি থাকবে, যেমনটি আমরা পরে বুঝতে পারব), অনেক imap অংশ, এবং অবশ্যই আরও অনেক ইনোড, ডেটা ব্লক ইত্যাদি।


To make sure you understand how LFS works, let us now walk through what must happen to read a file from disk.

LFS কিভাবে কাজ করে তা নিশ্চিত করার জন্য, আসুন এখন ডিস্ক থেকে একটি ফাইল পড়তে কি করতে হবে তা দেখে নেওয়া যাক।


Assume we have nothing in memory to begin.

ধরুন শুরু করার জন্য আমাদের মেমরিতে কিছুই নেই।


The first on-disk data structure we must readis the checkpoint region.

প্রথম অন-ডিস্ক ডেটা স্ট্রাকচার যা আমাদের পড়তে হবে তা হল চেকপয়েন্ট অঞ্চল।


After this point, when given an inode number of a file, LFS simply looks up the inode-number to inode-disk- address mapping in the imap, and reads in the most recent version of the inode.

এই বিন্দুর পরে, যখন একটি ফাইলের ইনোড নম্বর দেওয়া হয়, LFS কেবল imap-এ ইনোড-নম্বর থেকে ইনোড-ডিস্ক-ঠিকানার ম্যাপিং খুঁজে বের করে এবং ইনোডের সবচেয়ে সাম্প্রতিক সংস্করণটি পড়ে।


In the common case, LFS should perform the same number of I/Os as a typical file system when reading a file from disk; the entire imap is cached and thus the extra work LFS does during a read is to look up the inode’s address in the imap.

সাধারণ ক্ষেত্রে, LFS-এর একটি ফাইল ডিস্ক থেকে পড়ার সময় একটি সাধারণ ফাইল সিস্টেমের মতোই I/O-এর সংখ্যা করা উচিত; পুরো imap ক্যাশে করা হয় এবং এইভাবে LFS একটি রিডের সময় যে অতিরিক্ত কাজটি করে তা হল imap-এ ইনোডের ঠিকানা খুঁজে বের করা।


However, to access a file in a file system (such as /home/remzi/foo, one of our favorite fake file names), some directo- ries must be accessed too.

যাইহোক, একটি ফাইল সিস্টেমে একটি ফাইল অ্যাক্সেস করার জন্য (যেমন /home/remzi/foo, আমাদের পছন্দের একটি নকল ফাইলের নাম), কিছু ডিরেক্টরিও অ্যাক্সেস করতে হবে।


Fortunately, directory structure is basically identical to classic UNIX file systems, in that a directory is just a collection of (name, inode number) mappings.

সৌভাগ্যবশত, ডিরেক্টরি কাঠামো মূলত ক্লাসিক UNIX ফাইল সিস্টেমের মতোই, যেখানে একটি ডিরেক্টরি হল (নাম, ইনোড নম্বর) ম্যাপিং-এর একটি সংগ্রহ।


Remember that LFS will do so sequentially on the disk (after buffering the updates for some time).

মনে রাখবেন যে LFS কিছু সময়ের জন্য আপডেটগুলি বাফার করার পরে ডিস্কে এটি ক্রমানুসারে করবে।


Thus, creatinga filefooin a directory would lead to the following new structures on disk:

সুতরাং, একটি ডিরেক্টরিতে একটি ফাইল তৈরি করলে ডিস্কে নিম্নলিখিত নতুন কাঠামো তৈরি হবে:


You may have noticed another problem with LFS; it keeps writing newer version of a file, its inode, and in fact all data to new parts of the disk.

আপনি সম্ভবত LFS-এর সাথে আরেকটি সমস্যা লক্ষ্য করেছেন; এটি একটি ফাইলের নতুন সংস্করণ, এর ইনোড এবং প্রকৃতপক্ষে সমস্ত ডেটা ডিস্কের নতুন অংশে লিখতে থাকে।


আমরা এই ধরনের পুরনো জিনিসকে আবর্জনা বলি।


For example, let’s imagine the case where we have an existingfile re- ferred to by inode numberk, which points to a single data blockD0.

উদাহরণস্বরূপ, আসুন এমন একটি পরিস্থিতির কল্পনা করি যেখানে আমাদের একটি বিদ্যমান ফাইল রয়েছে যা ইনোড নম্বর k দ্বারা উল্লেখ করা হয়েছে, যা একটি একক ডেটা ব্লক D0-এর দিকে নির্দেশ করে।


By the simple act of overwriting a data block, a number of new structures must be persisted by LFS, thus leaving old versions of said blocks on the disk.

একটি ডেটা ব্লক ওভাররাইট করার সাধারণ কাজের মাধ্যমে, LFS-এর দ্বারা বেশ কয়েকটি নতুন কাঠামো বজায় রাখতে হবে, এইভাবে ডিস্কে উক্ত ব্লকগুলির পুরানো সংস্করণগুলি রেখে যেতে হবে।


In DSM systems, some accesses are inexpensive, but others cause page faults.

ডিএসএম সিস্টেমে, কিছু অ্যাক্সেস সস্তা, কিন্তু অন্যগুলি পেজ ফল্ট ঘটায়।


Imagine a linked list where a next pointer points into a portion of the address space that is gone.

কল্পনা করুন একটি লিঙ্কযুক্ত তালিকা যেখানে একটি পরবর্তী পয়েন্টার ঠিকানা স্থানের এমন একটি অংশে নির্দেশ করে যা আর নেই।


Though much research was performed in this space, there was little practical impact.

যদিও এই বিষয়ে অনেক গবেষণা করা হয়েছিল, তবে এর ব্যবহারিক প্রভাব সামান্যই ছিল।


Remote procedure call packages all have a simple goal: to make the process of executing code on a remote machine as simple and straightforward as calling a local function.

রিমোট প্রসিডিওর কল প্যাকেজগুলির একটি সাধারণ লক্ষ্য রয়েছে: একটি দূরবর্তী মেশিনে কোড কার্যকর করার প্রক্রিয়াটিকে স্থানীয় ফাংশন কল করার মতোই সহজ এবং সরল করা।


The stub generator’s job is simple: to remove some of the pain of packing function arguments and results into messages by automating it.

স্টাব জেনারেটরের কাজ সহজ: ফাংশন আর্গুমেন্ট এবং ফলাফলগুলিকে বার্তাগুলিতে প্যাক করার কষ্ট দূর করা, এটিকে স্বয়ংক্রিয় করে।


The input to such a compiler is simply the set of calls a server wishes to export to clients.

এই ধরনের একটি কম্পাইলারের ইনপুট হল ক্লায়েন্টদের কাছে একটি সার্ভার যে কলগুলি রপ্তানি করতে চায় তার সেট।


For the client, a client stub is generated, which contains each of the functions specified in the interface.

ক্লায়েন্টের জন্য, একটি ক্লায়েন্ট স্টাব তৈরি করা হয়, যাতে ইন্টারফেসে নির্দিষ্ট করা প্রতিটি ফাংশন থাকে।


The process of putting all of this information into a single contiguous buffer is sometimes referred to as the marshaling of arguments or the serialization of the message.

এই সমস্ত তথ্যকে একটি একক সংলগ্ন বাফারে রাখার প্রক্রিয়াটিকে কখনও কখনও আর্গুমেন্টগুলির মার্শালিং বা বার্তার সিরিয়ালাইজেশন হিসাবে উল্লেখ করা হয়।


প্রতিক্রিয়ার জন্য অপেক্ষা করুন।


রিটার্ন কোড এবং অন্যান্য আর্গুমেন্ট আনপ্যাক করুন।


সার্ভারের জন্যও কোড তৈরি করা হয়।


বার্তাটি আনপ্যাক করুন।


প্রকৃত ফাংশনে কল করুন।


ফলাফলগুলি প্যাকেজ করুন।


উত্তর পাঠান।


Another important issue is the organization of the server with regards to concurrency.

আরেকটি গুরুত্বপূর্ণ বিষয় হল সমসাময়িকতার ক্ষেত্রে সার্ভারের সংগঠন।


The run-time library handles much of the heavy lifting in an RPC system.

রান-টাইম লাইব্রেরি একটি RPC সিস্টেমে অনেক ভারী কাজ পরিচালনা করে।


One of the first challenges we must overcome is how to locate a remote service.

আমাদের কাটিয়ে উঠতে হবে এমন প্রথম চ্যালেঞ্জগুলির মধ্যে একটি হল কীভাবে একটি দূরবর্তী পরিষেবা সনাক্ত করা যায়।


This problem, of naming, is a common one in distributed systems.

নামকরণের এই সমস্যাটি বিতরণ করা সিস্টেমে একটি সাধারণ সমস্যা।


The key to any distributed system is how you deal with that failure.

যে কোনও বিতরণ করা সিস্টেমের মূল বিষয় হল আপনি কীভাবে সেই ব্যর্থতা মোকাবেলা করেন।


The client application will want to call open(), read(), write(), close() and other standard API calls to access files and directories.

ক্লায়েন্ট অ্যাপ্লিকেশনটি ফাইল এবং ডিরেক্টরি অ্যাক্সেস করার জন্য ওপেন(), রিড(), রাইট(), ক্লোজ() এবং অন্যান্য স্ট্যান্ডার্ড এপিআই কল করতে চাইবে।


Imagine the server crashes after the first read completes, but before the client has issued the second one.

কল্পনা করুন সার্ভারটি প্রথম রিড সম্পন্ন হওয়ার পরে ক্র্যাশ করে, কিন্তু ক্লায়েন্ট দ্বিতীয়টি ইস্যু করার আগে।


In this example, the file descriptor is a piece of shared state between the client and the server.

এই উদাহরণে, ফাইল ডেস্ক্রিপ্টরটি ক্লায়েন্ট এবং সার্ভারের মধ্যে শেয়ার করা একটি অবস্থার অংশ।


Shared state, as we hinted above, complicates crash recovery.

শেয়ার করা অবস্থা, যেমনটি আমরা উপরে ইঙ্গিত করেছি, ক্র্যাশ পুনরুদ্ধারকে আরও জটিল করে তোলে।


For these reasons, the designers of NFS decided to pursue a stateless approach.

এই কারণে, NFS-এর ডিজাইনাররা একটি স্টেটলেস পদ্ধতির অনুসরণ করার সিদ্ধান্ত নিয়েছেন।


Each client operation contains all the information needed to complete the request.

প্রতিটি ক্লায়েন্ট অপারেশনে অনুরোধটি সম্পূর্ণ করার জন্য প্রয়োজনীয় সমস্ত তথ্য থাকে।


How can we define the network protocol to enable stateless operation?

কিভাবে আমরা স্টেটলেস অপারেশন সক্ষম করতে নেটওয়ার্ক প্রোটোকল সংজ্ঞায়িত করতে পারি?


File handles are used to uniquely describe the file or directory a particular operation is going to operate upon.

ফাইল হ্যান্ডেলগুলি একটি নির্দিষ্ট অপারেশন যে ফাইল বা ডিরেক্টরির উপর কাজ করতে যাচ্ছে তা অনন্যভাবে বর্ণনা করতে ব্যবহৃত হয়।


You can think of a file handle as having three important components: a volume identifier, an inode number, and a generation number.

আপনি একটি ফাইল হ্যান্ডেলকে তিনটি গুরুত্বপূর্ণ উপাদান হিসাবে ভাবতে পারেন: একটি ভলিউম শনাক্তকারী, একটি ইনোড নম্বর এবং একটি জেনারেশন নম্বর।


The volume identifier informs the server which file system the request refers to.

ভলিউম শনাক্তকারী সার্ভারকে জানায় যে অনুরোধটি কোন ফাইল সিস্টেমের সাথে সম্পর্কিত।


The inode number tells the server which file within that partition the request is accessing.

ইনোড নম্বর সার্ভারকে বলে যে সেই পার্টিশনের মধ্যে কোন ফাইলটি অনুরোধটি অ্যাক্সেস করছে।


Finally, the generation number is needed when reusing an inode number.

পরিশেষে, একটি ইনোড নম্বর পুনরায় ব্যবহার করার সময় জেনারেশন নম্বরের প্রয়োজন হয়।


The client passes a directory file handle and name of a file to look up.

ক্লায়েন্ট একটি ডিরেক্টরি ফাইল হ্যান্ডেল এবং একটি ফাইলের নাম পাঠায় যা খুঁজে বের করতে হবে।


Once a file handle is available, the client can issue READ and WRITE protocol messages on a file.

ফাইল হ্যান্ডেল উপলব্ধ হওয়ার পরে, ক্লায়েন্ট একটি ফাইলে রিড এবং রাইট প্রোটোকল বার্তা ইস্যু করতে পারে।


The READ protocol message requires the protocol to pass along the file handle of the file along with the offset within the file and number of bytes to read.

রিড প্রোটোকল বার্তার জন্য প্রোটোকলটিকে ফাইলের ফাইল হ্যান্ডেল, ফাইলের মধ্যে অফসেট এবং কত বাইট পড়তে হবে তা জানাতে হয়।


WRITE is handled similarly, except the data is passed from the client to the server, and just a success code is returned.

রাইট একই রকমভাবে পরিচালনা করা হয়, তবে ডেটা ক্লায়েন্ট থেকে সার্ভারে পাঠানো হয় এবং শুধুমাত্র একটি সাফল্যের কোড ফেরত আসে।


If an operation is not idempotent, life becomes more difficult.

যদি কোনো অপারেশন আইডিেম্পোটেন্ট না হয়, তবে জীবন আরও কঠিন হয়ে যায়।


In NFSv2, a client handles all of these failures in a single, uniform, and elegant way: it simply retries the request.

NFSv2-এ, একটি ক্লায়েন্ট এই সমস্ত ব্যর্থতা একটি একক, অভিন্ন এবং মার্জিত উপায়ে পরিচালনা করে: এটি কেবল অনুরোধটি পুনরায় চেষ্টা করে।


An operation is called idempotent when the effect of performing the operation multiple times is equivalent to the effect of performing the operating a single time.

একটি অপারেশনকে আইডিেম্পোটেন্ট বলা হয় যখন একাধিকবার অপারেশন করার প্রভাব এককবার অপারেশন করার সমতুল্য হয়।


The heart of the design of crash recovery in NFS is the idempotency of most common operations.

NFS-এ ক্র্যাশ পুনরুদ্ধারের নকশার মূল বিষয় হল সর্বাধিক সাধারণ ক্রিয়াকলাপগুলির আইডিেম্পোটেন্সি।


The server crashed before writing the data to disk.

তথ্য ডিস্কে লেখার আগেই সার্ভারটি ক্র্যাশ করে গিয়েছিল।


Clients handle server failure based on assumptions.

ক্লায়েন্টরা কিছু ধারণার উপর ভিত্তি করে সার্ভারের ব্যর্থতা পরিচালনা করে।


NFS servers must commit each write to stable storage.

এনএফএস সার্ভারগুলিকে অবশ্যই প্রতিটি লেখা স্থিতিশীল স্টোরেজে জমা দিতে হবে।


ক্লায়েন্টকে তার সাফল্যের বিষয়ে জানানো হয়েছিল।


Imagine the following sequence of writes.

নিচের লেখাগুলির ক্রম কল্পনা করুন।


This requirement gives rise to in NFS server implementation.

এই প্রয়োজনীয়তা এনএফএস সার্ভার বাস্তবায়নে জন্ম দেয়।


The server quickly restarts and receives the third write request.

সার্ভার দ্রুত পুনরায় চালু হয় এবং তৃতীয় লেখার অনুরোধটি গ্রহণ করে।


ফাইল বিষয়বস্তু এইরকম দেখাচ্ছে।


The server told the client that the second write was successful.

সার্ভার ক্লায়েন্টকে জানিয়েছিল যে দ্বিতীয় লেখাটি সফল হয়েছে।


Doing so ensures we will never end up with file contents intermingled.

এটি নিশ্চিত করে যে আমরা কখনই ফাইলের বিষয়বস্তু মিশ্রিত অবস্থায় পাবো না।


The problem that this requirement gives rise to in NFS server implementation is that write performance, without great care, can be the major performance bottleneck.

এই প্রয়োজনীয়তার কারণে NFS সার্ভার বাস্তবায়নে যে সমস্যা দেখা দেয় তা হল লেখার কর্মক্ষমতা, যা খুব সতর্ক না হলে, প্রধান কর্মক্ষমতা বাধা হতে পারে।


We have seen the introduction of the NFS distributed file system.

আমরা NFS বিতরণ করা ফাইল সিস্টেমের প্রবর্তন দেখেছি।


অপারেশনগুলির আইডিএমপোটেন্সি অপরিহার্য।


We also have seen how the introduction of caching into a multiple-client, single-server system can complicate things.

আমরা আরও দেখেছি কিভাবে একটি মাল্টি-ক্লায়েন্ট, একক-সার্ভার সিস্টেমে ক্যাশিং-এর প্রবর্তন জিনিসগুলিকে জটিল করে তুলতে পারে।


Writes to the server must be forced to stable storage before returning success.

সাফল্য ফিরে আসার আগে সার্ভারে লেখাগুলি স্থিতিশীল স্টোরেজে পাঠাতে হবে।


Security in early NFS implementations was remarkably lax.

প্রথম দিকের NFS বাস্তবায়নে নিরাপত্তা ছিল উল্লেখযোগ্যভাবে শিথিল।


The Andrew File System was introduced by researchers at Carnegie-Mellon University.

কার্নেগি মেলন বিশ্ববিদ্যালয়ের গবেষকদের দ্বারা অ্যান্ড্রু ফাইল সিস্টেমের সূচনা হয়েছিল।


The main goal of this project was simple: scale.

এই প্রকল্পের প্রধান লক্ষ্য ছিল সহজ: স্কেল করা।


In NFS, the protocol forces clients to check with the server periodically.

NFS-এ, প্রোটোকল ক্লায়েন্টদের সার্ভারের সাথে পর্যায়ক্রমে পরীক্ষা করতে বাধ্য করে।


AFS also differs from NFS in that from the beginning, reasonable user-visible behavior was a first-class concern.

এছাড়াও AFS, NFS থেকে ভিন্ন, কারণ শুরু থেকেই, ব্যবহারকারীর কাছে দৃশ্যমান যুক্তিসঙ্গত আচরণ একটি প্রধান উদ্বেগের বিষয় ছিল।


সার্ভারটি অপ্রত্যাশিতভাবে ক্র্যাশ করেছে।


Clients need to re-establish the validity of files after a server crash.

সার্ভার ক্র্যাশের পরে ক্লায়েন্টদের ফাইলের বৈধতা পুনরায় স্থাপন করতে হবে।


The AFSv2 protocol improved scalability compared to the original version.

AFSv2 প্রোটোকলটি মূল সংস্করণের তুলনায় স্কেলেবিলিটি উন্নত করেছে।


File reads often went to the local disk cache.

ফাইল রিডগুলি প্রায়শই স্থানীয় ডিস্ক ক্যাশে যেত।


When a client created a new file, a Store message was sent to the server.

যখন কোনও ক্লায়েন্ট একটি নতুন ফাইল তৈরি করে, তখন সার্ভারে একটি স্টোর বার্তা পাঠানো হয়েছিল।


AFS is faster than NFS in the case of large-file sequential re-reads.

বড় ফাইলের ধারাবাহিক পুনরায় পাঠের ক্ষেত্রে AFS, NFS-এর চেয়ে দ্রুত।


Sequential writes of new files should perform similarly on both systems.

নতুন ফাইলগুলির ধারাবাহিক লেখা উভয় সিস্টেমে একইভাবে পারফর্ম করা উচিত।


AFS performs worse on a sequential file overwrite.

একটি ধারাবাহিক ফাইল ওভাররাইটে AFS খারাপ পারফর্ম করে।


Workloads that access a small subset of data within large files perform much better on NFS.

যে ওয়ার্কলোডগুলি বৃহৎ ফাইলের মধ্যে ডেটার একটি ছোট উপসেটে অ্যাক্সেস করে, সেগুলি NFS-এ অনেক ভালো পারফর্ম করে।


AFS provides a true global namespace to clients.

AFS ক্লায়েন্টদের জন্য একটি সত্যিকারের গ্লোবাল নেমস্পেস সরবরাহ করে।


The designers of AFS made certain workload assumptions.

AFS-এর ডিজাইনাররা কিছু ওয়ার্কলোডের অনুমান করেছিলেন।


AFS নিরাপত্তা নিয়েও গুরুতর।


AFS incorporates mechanisms to authenticate users.

AFS ব্যবহারকারীদের প্রমাণীকরণের জন্য প্রক্রিয়াগুলি অন্তর্ভুক্ত করে।


AFS adds tools to enable simpler management of servers.

AFS সার্ভারগুলির সহজ ব্যবস্থাপনার জন্য সরঞ্জাম যুক্ত করে।


The consistency model provided by AFS is simple to understand.

AFS দ্বারা সরবরাহ করা ধারাবাহিকতা মডেলটি বুঝতে সহজ।


NFS একটি উন্মুক্ত মান হয়ে উঠেছে।


NFS বাজারকে প্রভাবিত করে।


The ideas of AFS are likely to have a lasting influence.

AFS-এর ধারণাগুলির সম্ভবত দীর্ঘস্থায়ী প্রভাব থাকবে।


NFSv4 এখন সার্ভার অবস্থা যোগ করে।


The AFS design makes perfect sense given certain assumptions.

কিছু অনুমানের ভিত্তিতে AFS ডিজাইনটি পুরোপুরি অর্থবহ।


Time sharing is a method of allowing multiple users to access a computer system simultaneously.

টাইম শেয়ারিং হল এমন একটি পদ্ধতি যা একাধিক ব্যবহারকারীকে একই সাথে একটি কম্পিউটার সিস্টেমে অ্যাক্সেস করার অনুমতি দেয়।


Virtualization is a key concept in modern operating systems.

ভার্চুয়ালাইজেশন আধুনিক অপারেটিং সিস্টেমের একটি মূল ধারণা।


The book discusses how to virtualize memory.

বইটিতে আলোচনা করা হয়েছে কীভাবে মেমরি ভার্চুয়ালাইজ করা যায়।


সময়-স্থান বিনিময় সম্পর্কে বুঝুন।


How to build a distributed file system is a complex topic.

কিভাবে একটি বিতরণ করা ফাইল সিস্টেম তৈরি করা যায় তা একটি জটিল বিষয়।


The operating system uses a timer interrupt.

অপারেটিং সিস্টেম একটি টাইমার ইন্টারাপ্ট ব্যবহার করে।


অকাল অপটিমাইজেশন এড়িয়ে চলুন।


The principle of isolation is important.

বিচ্ছিন্নতার নীতি গুরুত্বপূর্ণ।


সম্ভব হলে ক্যাশিং ব্যবহার করুন।


How to handle common concurrency bugs is discussed in the book.

বইটিতে সাধারণ সমকালীনতা বাগগুলি কীভাবে পরিচালনা করতে হয় তা নিয়ে আলোচনা করা হয়েছে।


The system call looks like a procedure call.

সিস্টেম কলটি একটি পদ্ধতির কলের মতো দেখায়।


The book was typeset using the amazing L A T E X typesetting system.

বইটি অত্যাশ্চর্য L A T E X টাইপসেটিং সিস্টেম ব্যবহার করে টাইপ করা হয়েছিল।


How to build systems that work when components fail is a critical topic.

উপাদানগুলি ব্যর্থ হলে কীভাবে সিস্টেম তৈরি করা যায় যা কাজ করে তা একটি গুরুত্বপূর্ণ বিষয়।


বিস্তৃত-ভিত্তিক পদ্ধতির কথা বিবেচনা করুন।


The RAID consistent-update problem is a challenge.

RAID ধারাবাহিক-আপডেট সমস্যা একটি চ্যালেঞ্জ।


Understand time-space trade-offs to improve performance.

কর্মক্ষমতা উন্নত করতে সময়-স্থান বিনিময় সম্পর্কে বুঝুন।


The principle of SJF is important for scheduling.

SJF নীতি সময়সূচীর জন্য গুরুত্বপূর্ণ।


How to manage free space is a key aspect of file systems.

ফ্রি স্পেস পরিচালনা করা ফাইল সিস্টেমের একটি মূল দিক।


শর্তের জন্য While (যদি না) ব্যবহার করুন।


সন্দেহ হলে, চেষ্টা করে দেখুন।