๐Ÿฏ[TIL] 250730-042

byoยท2025๋…„ 7์›” 30์ผ
post-thumbnail

๐Ÿ’ซ CS

๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค

  • ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค.
  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์™€ ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จ.

๐Ÿ” ํ”„๋กœ๊ทธ๋žจ vs ํ”„๋กœ์„ธ์Šค

ํ•ญ๋ชฉํ”„๋กœ๊ทธ๋žจํ”„๋กœ์„ธ์Šค
์ƒํƒœ์ •์ ๋™์ 
์œ„์น˜์ €์žฅ์žฅ์น˜๋ฉ”๋ชจ๋ฆฌ
๊ฐœ์ˆ˜ํ•˜๋‚˜์—ฌ๋Ÿฌ ๊ฐœ ๊ฐ€๋Šฅ

๐Ÿ” ํ”„๋กœ์„ธ์Šค vs ์Šค๋ ˆ๋“œ

ํ•ญ๋ชฉํ”„๋กœ์„ธ์Šค์Šค๋ ˆ๋“œ
๋ฉ”๋ชจ๋ฆฌ๋…๋ฆฝ์ ๊ณต์œ 
ํ†ต์‹ IPC ํ•„์š”๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ
์•ˆ์ •์„ฑ์˜ค๋ฅ˜ ๊ฒฉ๋ฆฌ ๊ฐ€๋Šฅ์˜ค๋ฅ˜ ์ „ํŒŒ ๊ฐ€๋Šฅ
์˜ˆ์‹œ๋ธŒ๋ผ์šฐ์ € ์ฐฝํƒญ๋“ค

โœ… ํ”„๋กœ์„ธ์Šค ์ƒํƒœ

  • New: ์ƒ์„ฑ ์ค‘
  • Ready: ์‹คํ–‰ ์ค€๋น„
  • Running: ์‹คํ–‰ ์ค‘
  • Waiting: I/O ๋Œ€๊ธฐ
  • Terminated: ์ข…๋ฃŒ

๐Ÿ“Ž ์ „์ด ํ๋ฆ„

New โ†’ Ready โ†’ Running โ†’ Waiting โ†’ Ready โ†’ Running โ†’ Terminated

โœ… PCB (Process Control Block)

  • ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ์ฒด

๐Ÿ“Ž ์ฃผ์š” ํ•ญ๋ชฉ

  • PID, ์ƒํƒœ, ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ, ๋ ˆ์ง€์Šคํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ, ํŒŒ์ผ ์ •๋ณด, ์Šค์ผ€์ค„๋ง ์ •๋ณด ๋“ฑ

โœ… ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ

๐Ÿ“Ž ์ฃผ์š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ

ํ˜ธ์ถœ์„ค๋ช…
fork()๋ถ€๋ชจ ๋ณต์ œ
exec()์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰
wait()์ž์‹ ์ข…๋ฃŒ ๋Œ€๊ธฐ
exit()์ข…๋ฃŒ
kill(pid, sig)์‹œ๊ทธ๋„ ์ „์†ก (์ข…๋ฃŒ ๋“ฑ)

๐Ÿ“Ž ์ƒ์„ฑ ํ๋ฆ„

fork() โ†’ exec() โ†’ exit() โ†’ wait()

โœ… ์ƒํƒœ ์ „์ด ๋‹ค์ด์–ด๊ทธ๋žจ

stateDiagram-v2
  [*] --> New
  New --> Ready : ์ƒ์„ฑ ์™„๋ฃŒ
  Ready --> Running : CPU ํ• ๋‹น
  Running --> Terminated : ์ข…๋ฃŒ
  Running --> Ready : ํƒ€์ž„์Šฌ๋ผ์ด์Šค ์ข…๋ฃŒ
  Running --> Waiting : I/O ์š”์ฒญ
  Waiting --> Ready : I/O ์™„๋ฃŒ

๐Ÿ” ์š”์•ฝ

  1. ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ
  2. ์ƒํƒœ๋Š” New, Ready, Running, Waiting, Terminated
  3. PCB๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ์ •๋ณด ์ €์žฅ
  4. ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋กœ ์ƒ์„ฑ/์ œ์–ด/์ข…๋ฃŒ
  5. ์ „์ด์™€ ํ๋ฆ„์€ OS๊ฐ€ ์ž๋™ ๊ด€๋ฆฌ

๐Ÿ’ซ Vercel

1. ๋กœ๊ทธ์ธ

ํ™ˆํŽ˜์ด์ง€์— ์ ‘์†ํ•ด github๋กœ ๋กœ๊ทธ์ธํ•œ๋‹ค

2. github์— ์—…๋กœ๋“œ

vscode ์—์„œ git add commit push gui๋กœ ์ œ๊ณตํ•ด์ค€๋‹ค.

3. deploy - vercel


๐Ÿ’ซ Tailwind

1. ์„ค์น˜

์ด ํŽ˜์ด์ง€๋ฅผ ๋”ฐ๋ผํ•˜๋ฉด ๋œ๋‹ค

2. ์„ค์น˜๋ช…๋ น์–ด

โš™๏ธ shell - npm (vite ver.)

npm create vite@latest my-project
cd my-project

npm install
npm install tailwindcss @tailwindcss/vite

๐Ÿ“ vite.config.js

import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
  plugins: [
    tailwindcss(),
  ],
})

๐Ÿ“ index.css

@import "tailwindcss";

๐Ÿ“ main.jsx

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.jsx'

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <App />
  </StrictMode>,
)

๐Ÿ“ app.jsx

const App = () => {
  return <div className="bg-amber-300 text-2xl">App</div>;
};

export default App;

โš™๏ธ shell - npm

npm run dev

๐Ÿ’ซ React

๐Ÿ Calendar App with tailwind

๐Ÿ“ฆsrc
 โ”ฃ ๐Ÿ“‚assets
 โ”ฃ ๐Ÿ“‚components
 โ”ƒ โ”ฃ ๐Ÿ“œCalendar.jsx
 โ”ƒ โ”— ๐Ÿ“œDateCard.jsx
 โ”ฃ ๐Ÿ“œApp.jsx
 โ”ฃ ๐Ÿ“œindex.css
 โ”ฃ ๐Ÿ“œmain.jsx
 โ”— ๐Ÿ“œscheduleList.json

๐Ÿ“œApp.jsx

import Calendar from "./components/Calendar";

const App = () => {
  return (
    <div className="bg-red-100 min-h-screen flex justify-center items-center">
      <Calendar />
    </div>
  );
};

export default App;

๐Ÿ“œCalendar.jsx

import DateCard from "./DateCard";
import scheduleList from "../scheduleList.json"

const Calendar = () => {
  return (
    <div className="bg-blue-200 min-w-7xl rounded-2xl shadow p-20">
      <h1 className="bg-white mb-6 text-right font-bold text-4xl p-4 rounded-2xl">
        August, 2025
      </h1>
      <div className="grid grid-cols-7 justify-items-center gap-4">
        {scheduleList.map((value) => (
          <DateCard 
            key={value.date} 
            date={value.date}
            todos={value.todos}
          />
        ))}
      </div>
    </div>
  );
}

export default Calendar;

๐Ÿ“œDateCard.jsx

const DateCard = ({ date, todos }) => {
  return (
    <div className="bg-white w-40 h-60 rounded-2xl">
      <div className="bg-red-400 text-2xl font-semibold text-right px-2 rounded-t-2xl">{date}</div>
      <div className="text-lg p-2"></div>
      <div className="text-lg p-2 flex-col gap-2">
        <div>{todos.map((value, idx) => (
          <p key={idx}>{value}</p>
        ))}</div>
      </div>
    </div>
  );
}

export default DateCard;

๐Ÿ“œscheduleList.json

[
  {
    "date": 1,
    "todos": [],
    "isSat": false,
    "isHoliday": false
  },
  ...
]

๐Ÿ“œmain.jsx

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import App from './App.jsx'

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <App />
  </StrictMode>,
)
profile
๐Ÿ—‚๏ธ hamstern

0๊ฐœ์˜ ๋Œ“๊ธ€